C++运算符重载 - 指针,乘法

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)


Jam*_*nze 5

它的工作原理与所有可以定义一元或二元运算符(+-&其他运算符)的运算符符号完全一样,它取决于函数将采用的参数数量。因此,*应将一元定义为采用单个运算符,或者作为不带参数的非静态类成员(除了this),或者作为带单个参数的自由函数。二元运算符应定义为采用两个参数,或者作为采用一个参数(除了this)的非静态类成员,或者作为采用两个参数的自由函数。

请注意,函数的名称被认为是相同的,因此二进制版本可以隐藏一元版本,反之亦然。