C++ nonconst-const-overloaded 方法选择

标签 c++ constants overloading

我的类中有常量重载方法:

class A{
  public:
     typedef int data[10];

           data& operator[](int index);
     const data& operator[](int index) const;
}

此类正在为其内部数据实现写时复制。我想因为我允许直接访问数据,所以我必须在每次使用 operator[] 时创建共享数据的拷贝(如果它明显共享),而不是 operator[] const 。然而,即使代码使用 operator[] 读取数据,但对象本身没有声明为 const,它仍然会导致创建拷贝,因为将使用 operator[]。是否有任何语法允许我选择调用哪些运算符?

最佳答案

是:const_cast<A const&>(anAObj)[5] .

关于C++ nonconst-const-overloaded 方法选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5832995/

相关文章:

c++ - 这个预处理器指令在这里可以接受吗?

android - 在 XML 定义的数组中使用 Java 常量

C++ 显式返回类型模板特化

c++ - 为什么这个函数不能用明显不同的签名之一重载?

c# - 方法签名、重载、覆盖 : are all these terms related?

c++ - 将字符与 Qt 中的 unicode 进行比较

c++ - 运行 GTKmm 程序时获取 “gtk_settings_get_for_screen: assertion ‘GDK_IS_SCREEN (screen)’ 失败”

c - 初学者如何使用常量内存(Cuda C)

C++: STL: set: 存储值常量

c++ - 返回指向在不同线程中更新的 QML 的 C++ 指针