Có tốt không khi sử dụng trường tham chiếu const làm trình lấy chỉ đọc trong các lớp C++?Trường tham chiếu Const là thuộc tính chỉ đọc trong lớp C++
Ý tôi là, mã này có đáp ứng các phương pháp hay không?
class check{
private:
int _x;
public:
const int& x = _x;
void setX(int v){
_x = v;
}
};
Nó đang làm việc rất giống với C# thuộc tính, IMHO, và rất dễ dàng và sạch sẽ trong mã sử dụng lớp:
check s;
int i;
std::cin >> i;
s.setX(i);
std::cout << s.x << '\n';
s.setX(7);
// s.x = i; // Error
std::cout<<s.x<<'\n';
Và có thể là const cast to oblivion :) – StoryTeller
Không, nó là một thực tế xấu kể từ khi lưu trữ tham chiếu này có thể gây ra một chi phí bộ nhớ thêm so với một hàm getter nội tuyến đơn giản. Một điều nữa là bạn sẽ không thể thực hiện kiểm tra/kiểm tra thời gian chạy bất kể giá trị được truy cập. Thật không may là không có cách nào thực sự để mô phỏng cú pháp giống như thuộc tính C#. Có một [mở rộng thuộc tính 'đặc trưng của MS] (https://docs.microsoft.com/en-us/cpp/cpp/property-cpp) nhưng chúng không chuẩn và bị bỏ rơi. – VTT
Hãy thử gán một 'kiểm tra' cho một dấu kiểm khác. – molbdnilo