gpt4 book ai didi

c++ - 引用代替 setter/getter ?

转载 作者:太空宇宙 更新时间:2023-11-04 11:45:28 24 4
gpt4 key购买 nike

在 C++ 中使用引用代替 getter 是一种不好的做法吗?

例如:

class X
{
int mP;
public:
const int& P;
X():P(mP){}
};

以后

X xl;
int h = xl.P;

最佳答案

只需考虑重构以使访问线程安全,这种方式不会很好地工作并且需要对客户端类/函数进行大量更改。

如果您有保证在实例的生命周期内不会更改的类成员,您可以简单地提供 const int P; 并在您的类的构造函数中正确初始化它。

如果该值在类范围内可见,请使用 static const int P;

在任何其他情况下使用公共(public) getter:

int P() const; // a return type of 'const int &' would be redundant  

第一次实现:

int X::P() const
{
return mP;
}

线程安全实现:

class X {
{
// ...
private:
// ...
mutable std::mutex internalDataGuard;
};

int X::P() const
{
std::lock(internalDataGuard);
return mP;
}

关于c++ - 引用代替 setter/getter ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19987354/

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