这是一个理解在下面的场景中实现get函数的正确方法的问题.
我得到了以下课程:
class A
{
string m_sName;
public:
A(): m_sName ("this") {}
const string& getName() const
{
return m_sName;
}
};
Run Code Online (Sandbox Code Playgroud)
上面执行get函数的问题是,它允许客户端修改数据成员.那是:
int main ()
{
A a;
const string& data_mem = a.getName();
string& s = const_cast<string&> (data_mem);
s += " Pointer";
cout << a.getName().c_str () << endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
输出将是:这个指针
我知道我们可以使用引用参数来获取函数或只是返回字符串.但两者都会创造新的对象.
有一个更好的方法吗?或者禁止const_cast(在用户定义的类上)?
C++让你有能力用脚射击自己.
程序员应该const_cast极其谨慎地使用:意识到使用它来抛弃const最初声明为的对象的行为const是未定义的.
代码分析工具可以帮助您.
| 归档时间: |
|
| 查看次数: |
97 次 |
| 最近记录: |