C++ 动态数组仅 getter 与重载的 [] 运算符一起使用

标签 c++ operator-overloading constants

我的 C++ 数组中有一个重载的 [ ] 运算符。我有两个:

ElType operator[](int position) const; //getter
ElType & operator[](int position); //setter

但是,我注意到如果我这样做,例如:

std::cout << dynamicArray[4]; 

它只使用了setter,基本上忽略了getter。有什么办法让它使用 setter/getter 吗?问题是,我的 Getter 有代码来确保每次您分配一个值时,都会更改一个名为“size”的变量。但是我不希望它在我只获取值而不更改它时实际触发。

getter 的代码是:

ElType DynArray::operator[](int position) const{
std::cout << "using getter" << std::endl;

return buffer_[position];

那时我已经尝试了很多方法,比如将 & 插入 setter/getter 中,但这也没有用。如果重要的话,getter 在代码中也位于 setter 之上。

此外,在构建容量为 5 的动态数组时,将所有元素保持原样(基本上是随机值)是一个好习惯,还是我应该循环将它们全部设置为空/零?

最佳答案

因为你的 getter 是一个 const 成员函数,你应该能够通过使用一个 const 对象来强制使用你的 getter:

const DynArray cArray = dynamicArray;
std::cout << cArray[4]; 

关于C++ 动态数组仅 getter 与重载的 [] 运算符一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34208367/

相关文章:

c++ - (linux)Socket 返回 0

r - R S4 类和 Matrix 包中重载 + 运算符

c++ - 运算符 = 重载

vb.net - 为什么 Chr(3) 是常量表达式而不是 Chr(172)?

c++ - 通过指针更改 const 值 C++

c++ - 如何创建 C++ 11 非默认可构造分配器?

c++ - 阻塞/等待堆栈操作

c++ - 用于取值和赋值的矩阵下标运算符

C++ 二维下标运算符

c++ - 为什么 const 会阻止编译?