2009-02-15 5 views

Trả lời

8

Câu trả lời là Có.

(toán tử [] trả về một reference)

4

Có, chúng tôi có thể.
Và nó cũng hoạt động với std::vectors (và vì có vẻ như bạn đang sử dụng các phím số, bạn có thể xem xét sử dụng chúng thay thế).

+1

hãy cẩn thận với vectơ :: trình lặp (mặc dù nó không mang lại một tham chiếu) –

2

Có.

Điều này không khác gì khi gõ m [1] = "xyz". Trình biên dịch sẽ giảm tất cả về cùng một điều khi nó kết thúc với nó.

1

Lời khuyên: Bạn có thể muốn chuyển nó dưới dạng con trỏ thay vì tham chiếu. Tôi làm điều đó để làm cho nó rõ ràng hơn cho người đọc bình thường rằng nó sẽ được thay đổi.

Đó là tất cả về giao tiếp rõ ràng với anh chàng tiếp theo đi xuống pike, người đã duy trì mã này.

Nhưng khác hơn thế, vâng, đó là mã hoàn toàn hợp pháp!

+1

Tôi kính trọng không đồng ý với lời khuyên của bạn. Tôi có xu hướng thích tài liệu tham khảo trừ khi tôi sẽ cung cấp một con trỏ null trong một số trường hợp. Nếu không, tôi sợ rằng tôi chỉ đang tạo một cách có thể để lạm dụng mã, cụ thể là với một con trỏ null thay vì tham chiếu hợp lệ ... –

+0

1: Bạn có thể chuyển một tham chiếu null. Nó vi phạm giao thức ngôn ngữ nhưng nó có thể được thực hiện. Đó là sử dụng null dereferenced rằng coredumps. 2: khẳng định (x! = NULL) có chi phí thấp. 3: Tại điểm của cuộc gọi, hãy xem xét foo (bar); vs foo (&bar);. Điều đó & làm cho thanh rõ ràng được thay đổi. Ý kiến ​​của tôi là 0,02 đô la của tôi. –

0

Có, nó ổn - như mọi người đã nói - và hơn nữa, trình biên dịch của bạn sẽ cho bạn biết nếu nó không phải là. Bạn có thể muốn thử nghiệm một chút; thử chuyển "hello" hoặc (42) tới foo (chuỗi &) để có được cảm giác về các cảnh báo mà trình biên dịch cung cấp cho bạn.