两者有什么区别? 我刚开始C++,我在想。两个操作员功能之间的区别是什么?我知道第一个是数组,但第二个中的%是什么意思 T operator[] (int k) const { return 0; } T operator% () (int k) const { return 0; }

两者有什么区别? 我刚开始C++,我在想。两个操作员功能之间的区别是什么?我知道第一个是数组,但第二个中的%是什么意思 T operator[] (int k) const { return 0; } T operator% () (int k) const { return 0; },c++,C++,它们都只是表示运算符,实际上“[]”并不表示数组,而是表示您希望它是什么(尽管通常用于对象上的索引或数组初始化) 查看有关此主题的更多信息。但是,在制作简历时,几乎所有常见的运算符都可以重新定义,以便对特定对象或数据进行自定义操作。运算符是一种可以用特殊语法表示的函数。因此,如果在类MyClass上定义了以下内容: T MyClass::operator% (int k); 可称为: MyClass a; int k = 1; T answer = a % k; 另一个操作员: T MyCl

它们都只是表示运算符,实际上“[]”并不表示数组,而是表示您希望它是什么(尽管通常用于对象上的索引或数组初始化)


查看有关此主题的更多信息。但是,在制作简历时,几乎所有常见的运算符都可以重新定义,以便对特定对象或数据进行自定义操作。

运算符是一种可以用特殊语法表示的函数。因此,如果在类MyClass上定义了以下内容:

T MyClass::operator% (int k);
可称为:

MyClass a;
int k = 1;
T answer = a % k;
另一个操作员:

T MyClass::operator[] (int k);
可通过以下方式调用:

T answer = a[k];

按照惯例,%运算符被称为模运算符,[]运算符被称为下标运算符,但由于它们只是函数,您可以重新定义它们,使它们按您的喜好执行。

它们看起来都很无用。这些是用户定义的
操作符
s。他们可以做你让他们做的任何事。在本例中,两者都忽略其参数并返回0。唯一的区别是名称。还有更多的运算符可以重载。
T operator%()(int k)const
表示“编译错误”。您是否试图超载<代码>运算符%<代码>或<代码>操作程序()/@代码>?@ BOBOBOBOO:如果您认为问题应该有意义,请考虑编辑并澄清代码是否在您所看到的打印示例内。我以前从未见过这样的构造,正如Ferdinand所建议的,它会导致编译时错误。你为什么不指出他试图重载第二个运算符,即%,会导致编译时错误,因为他在%后面加了一个()使编译器混乱。这一点很好,在回答更一般的问题时,我没有注意到这一点。事实上,他可能已经理解了一般概念,可能会被错误的例子弄糊涂了。。因此,请进一步解释答案,以具体解决他的问题