c++ - 在 const 方法中更改对象状态

标签 c++ class c++11 constants

我有类似这样的类(class):

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() 中使用。

是否有其他更清晰、更好的方法来进行这种临时值存储?

最佳答案

您可以在 std::string tmp 上使用 mutable 修饰符:

class A {
  mutable std::string tmp;
  ...
}

这将允许 const 方法修改该成员。

关于c++ - 在 const 方法中更改对象状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33596437/

相关文章:

c++ - 如何通过保持性能来管理封装

c++ - 在CRC-16 CCITT中将数据从二进制解码为文本,我应该输入一个码字,并使用crc生成器对其进行编码,

c++ - nothrow/noexcept 是否足以说明我们有不抛出保证?

arrays - 在 Delphi 中传递类型数组的参数

c++ - 是否在空 std::forward_list 中定义了 before_begin() 之后的删除元素?

c++ - 大括号括起来的初始化列表构造函数

C++ vector 新删除

c++ - 使用指数对大数进行 Double 到 String 的转换

python 如何将一个类的实例变量获取到另一个类?

javascript - 是否有可能将所有全局/继承的 css 类应用于一个元素?