gpt4 book ai didi

c++ - 分配和检索的括号过载;常量,引用

转载 作者:太空宇宙 更新时间:2023-11-03 10:41:57 25 4
gpt4 key购买 nike

关于 C++ 中的重载括号,我的编译器使用 mutator 方法进行访问。谁能告诉我为什么?

1. const int & Cheese::operator [] (int i)const { return weight[i]; } //accessor
2. int & Cheese::operator [] (int i) { return weight[i]; } //mutator

例如,下面的 cout 命令使用增变函数定义——上面的#2——来访问数据。

Cheese cheddar;
cout << cheddar[2] << endl;

为什么不使用第一个函数——访问器——来获取数据?我认为,由于 cout 只是一个检索,它会在第一个触发。

编译器如何知道调用其中的哪些?

编辑:为了完整起见,对于增变器,我的意思是用作“ setter ”,如下所示:

cheddar[2] = 100;

两者结合起来如下:

cheddar[2] = cheddar[1];

rhs 只是一个“getter”。它只是检索 cheddar[1] 的值,不会更改任何内容,因此可以是 const。相反,lhs 括号重载 cheddar[2] 充当“setter”;值可以改变,函数返回值不能是const。

最佳答案

它为任何常量实例(如 const Cheeseconst Cheese&)调用第一个,为可变实例调用第二个。

关于c++ - 分配和检索的括号过载;常量,引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33928044/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com