cuốn sách gpt4 ai đã làm

c++ - reference 和 const reference 作为函数参数的区别?

In lại Tác giả: Taklimakan Thời gian cập nhật: 2023-11-02 23:33:06 30 4
mua khóa gpt4 Nike

Đây là một mã C++ đơn giản:

Một foo(){
A a; // tạo một đối tượng A cục bộ
trả lại một;
}

thanh trống(const A & a_r){

}

thanh(foo());

Tại sao tham số của thanh chức năng phải là tham chiếu const chứ không chỉ là tham chiếu?

Chỉnh sửa1: Tôi hiểu rằng trích dẫn là để tránh chi phí sao chép. const ở chế độ chỉ đọc. Nhưng ở đây tôi phải biến nó thành một tham chiếu const, nếu không nếu tôi xóa "const" thì g++ sẽ gây ra lỗi cho tôi.

Chỉnh sửa2: Tôi đoán là đối tượng trả về của foo() là đối tượng tạm thời và giá trị của đối tượng tạm thời không được phép thay đổi?

câu trả lời hay nhất

Nếu không có thông báo lỗi, tôi không chắc trình biên dịch có thể nhắc nhở điều gì, nhưng tôi có thể giải thích một cách hợp lý lý do:

Bên trong dòng:

thanh(foo()); 

Giá trị trả về của foo() là A tạm thời; nó được tạo bằng cách gọi foo() và sau đó bị hủy ngay sau khi bar() trả về. Chẳng ích gì khi thực hiện một thao tác không phải hằng (tức là một thao tác thay đổi tạm thời A) vì đối tượng A sẽ bị hủy ngay lập tức.

Nhìn xa hơn một chút, đây là bản sao ảo của câu hỏi:

Tại sao một tham chiếu không phải là hằng không thể liên kết với một đối tượng tạm thời?

Có một câu trả lời hay.

Về C++ - sự khác biệt giữa tham chiếu tham chiếu và tham chiếu const dưới dạng tham số hàm? , chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/1719818/

30 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress