我的课程类似于:
class A{
std::string tmp;
public:
const std::string &doSomething() const{
tmp = "something";
return tmp;
}
};
方法doSomething()
非常重要const
并返回引用而不是字符串本身。
我看到的唯一方法是使用动态分配,例如类似的东西:
class A{
MyClass *tmp = new MyClass();
public:
const MyClass &doSomething() const{
*tmp = "something";
return *tmp;
}
};
tmp
变量"占位符"仅在doSomething()
内使用。
还有其他一些更清晰,更好的方法来进行这种临时值存储吗?
答案 0 :(得分:2)
您可以在mutable
上使用std::string tmp
修饰符:
class A {
mutable std::string tmp;
...
}
这将允许const
方法修改该成员。
答案 1 :(得分:0)
查看mutable
关键字以声明tmp
。
答案 2 :(得分:0)
如果尝试修改属性,则应退出方法签名的const限定符:
的std :: string&安培; doSomething(){...}
如果您不想修改它,并且您希望确保该方法返回您正在等待接收的内容:
const std :: string& doSomething()const {...}
返回const引用是确保引用不会更改值的最佳方法。但是在返回类型之前没有const限定符也应该可以正常工作,因为第二个const限定符(指定该方法不应该修改当前对象)
总之,我完全赞同@juanchopanza 干杯