gpt4 book ai didi

c++ - const 引用字段作为 C++ 类中的只读属性

转载 作者:IT老高 更新时间:2023-10-28 22:18:01 26 4
gpt4 key购买 nike

在 C++ 类中使用 const 引用字段作为只读 getter 好不好?

我的意思是,这段代码符合良好的做法吗?

class check{
private:
int _x;
public:
const int& x = _x;
void setX(int v){
_x = v;
}
};

它的工作方式非常类似于 C# 属性、恕我直言,并且在类使用代码中非常简单和干净:

  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';

最佳答案

do this code meet good practices?

并非如此,因为它引入了不必要的复杂性和空间开销。

此外,无论访问的值如何,您都无法执行运行时检查和/或断言。

此外,生命周期和语义会发生什么?

尝试将代码中的一个 check 分配给另一个,看看会发生什么。作业格式不正确,因为该类是不可分配的。您应该提供一个复制和移动构造函数来处理引用,这样它就不会引用旧对象的数据成员。

最好直接使用 _x 并有一个简单的内联 getter 函数。


PS:C#-like properties in native C++?

关于c++ - const 引用字段作为 C++ 类中的只读属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46275304/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com