Trong một dự án tôi duy trì, tôi thấy rất nhiều mã như thế này cho đơn giản get
/set
phương phápViệc sử dụng tham chiếu const đi tới các kiểu nguyên thủy là gì?
const int & MyClass::getFoo() { return m_foo; }
void MyClass::setFoo(const int & foo) { m_foo = foo; }
điểm trong việc đó thay vì những điều sau đây là gì?
int MyClass::getFoo() { return m_foo; } // Removed 'const' and '&'
void MyClass::setFoo(const int foo) { m_foo = foo; } // Removed '&'
Chuyển tham chiếu đến kiểu nguyên thủy sẽ yêu cầu cùng một nỗ lực (hoặc nhiều hơn) khi chuyển giá trị của loại, phải không?
Nó chỉ là một số sau khi tất cả ...
Đây có phải là một số cố gắng tối ưu hóa vi mô hoặc có một lợi ích thực sự?
"rất nguy hiểm khi trả lại một tham chiếu (const hay không)" - Tôi tò mò, làm cách nào để bạn trả về các giá trị nặng hơn? Có lẽ nhu cầu làm là một dấu hiệu của thiết kế kém, nhưng tôi có xu hướng trả về chuỗi bởi const ref. –
@me - Tôi không nói dây là nặng, tôi chỉ muốn tránh các chi phí (phải thừa nhận có lẽ là nhỏ) của việc sao chép chúng xung quanh. –
Bằng cách này bạn phải suy nghĩ về tuổi thọ của đối tượng. Điều đó có thể có giá trị đối với các kiểu dữ liệu phức tạp, nhưng không có giá trị nguyên gốc được sao chép với cùng chi phí như các tham chiếu. – sharptooth