我想知道乘法运算(*)在指针中是否过载,反之亦然?
或者运营商是个人?
C ++
答案 0 :(得分:10)
它们是单独的运算符,您重载的运算符取决于传递给运算符的参数。
struct A
{
//dereference operator
A /*or whatever*/ operator *() { /*...*/ };
//multiply operator
A operator *(const A&) { /*...*/ };
};
//...
A a;
*a; //calls dereference operator
a * a; //calls multiply operator
答案 1 :(得分:4)
它的工作原理与所有可定义a的运算符符号完全相同
一元或二元运算符(+
,-
和&
是其他运算符),它
取决于函数将采用的参数数量。因此,一个
应该将一元*
定义为采用单个运算符,或者作为a
非静态类成员不带参数(this
除外),或作为
自由函数只需一个参数。二元运算符应该是
定义为采用两个参数,作为非静态类成员
采用一个参数(除this
之外)或自由函数服用
两个论点。
请注意,函数的名称被认为是相同的,因此a 二进制版本可以隐藏一元文本,反之亦然。