Tôi đã sửa một lỗi khác trong một số mã và gặp một số mã mà tôi đã nghĩ là một lỗi; tuy nhiên, mã này biên dịch theo gcc 4.4, 4.5 và 4.6 và xuất hiện với chức năng là "dự kiến". Bất cứ ai có thể cho tôi biết nếu điều này là hợp lệ c + +?trở về theo giá trị được gán cho tham chiếu const
struct foo {
int bar;
};
foo myfunction(foo const &orig) {
foo fooOnStack = orig;
fooOnStack.bar *= 100;
return fooOnStack;
}
void myOtherFunction(foo const &orig) {
foo const &retFoo = myfunction();
// perhaps do some tests on retFoo.bar ...
}
Nếu điều này là hợp lệ C++, có ai biết lý do đằng sau điều này là hợp pháp không?
Lý do chính tắc được nêu ở đây: [GotW # 88: Ứng cử viên cho “const quan trọng nhất”] (http://herbsutter.com/2008/01/01/gotw-88-a-candidate-for- quan trọng nhất-const /). – ildjarn
Ngoài ra, các tiêu chuẩn hỗ trợ này là hợp pháp C + + là trong C++ 03 §12.2/5. – ildjarn
Cảm ơn, tôi đã học được một số C++ hôm nay. Nó có ý nghĩa, nhưng tôi chưa bao giờ sử dụng nó trước đây, và biết rằng quay trở lại một tham chiếu không const không được phép. – graphicsMan