我想知道乘法运算(*)是否在指针中重载,反之亦然?
还是经营者是个体的?
C++
它们是独立的运算符,您重载哪一个取决于您传递给运算符的参数。
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
它的工作方式与所有可以定义一元或二元运算符(以及其他运算符)的运算符符号完全相同+
,-
它&
取决于函数将采用的参数数量。因此,*
应将一元定义为采用单个运算符,或者作为不带参数(除了this
)的非静态类成员,或者作为带单个参数的自由函数。二元运算符应该被定义为接受两个参数,或者作为一个接受一个参数(除了 )的非静态类成员this
,或者一个接受两个参数的自由函数。
请注意,函数的名称被认为是相同的,因此二进制版本可以隐藏一元版本,反之亦然。