gpt4 book ai didi

c++ - 从成员 get 方法返回 const 引用

转载 作者:太空宇宙 更新时间:2023-11-04 16:13:14 25 4
gpt4 key购买 nike

typedef vector<int> intvec;

class MyClass
{
intvec m_member;
public:
const intvec& GetVec();
};

const intvec& MyClass::GetVec()
{
return m_member;
}

int main(int argc, char *argv[])
{
MyClass myClassObj;

myClassObj.GetVec().push_back(11); //This doesn't work with const reference
myClassObj.GetVec().push_back(22); //This doesn't work with const reference

for(intvec::const_iterator iter = myClassObj.GetVec().begin(); iter != myClassObj.GetVec().end(); ++iter)
{
cout << *iter << ", " ;
}

cout << endl;

system("PAUSE");
return EXIT_SUCCESS;
}

如果 GetVec() 的返回类型是非 const 引用,则 myClassObj.GetVec().push_back(11); 有效,但对于 const 引用 return 这不起作用不工作(编译错误)。我知道如果 GetVec() 方法本身是常量,即 const intvec& GetVec() const;,那么 myClassObj.GetVec().push_back(11); 不会工作,因为这意味着修改“this”指针。

最佳答案

您可以根据 const 限定条件重载该函数:

const intvec& GetVec() const;    // Can access, but not modify, a const object
intvec& GetVec(); // Can access or modify a non-const object

或者您可以只公开数据成员并具有完全相同的限制。访问器函数没有什么意义,除非它们用于限制访问或维护类不变量,而这些不是。

关于c++ - 从成员 get 方法返回 const 引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25748250/

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