use*_*323 2 c++ overloading operator-keyword
我想知道乘法运算(*)在指针中是否过载,反之亦然?
或者运营商是个人的?
C++
Luc*_*ore 11
它们是单独的运算符,您重载的运算符取决于传递给运算符的参数.
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
Run Code Online (Sandbox Code Playgroud)
它的工作原理与所有可以定义一元或二元运算符(+
,-
和&
其他运算符)的运算符符号完全一样,它取决于函数将采用的参数数量。因此,*
应将一元定义为采用单个运算符,或者作为不带参数的非静态类成员(除了this
),或者作为带单个参数的自由函数。二元运算符应定义为采用两个参数,或者作为采用一个参数(除了this
)的非静态类成员,或者作为采用两个参数的自由函数。
请注意,函数的名称被认为是相同的,因此二进制版本可以隐藏一元版本,反之亦然。