3

我想知道乘法运算(*)是否在指针中重载,反之亦然?

还是经营者是个体的?

C++

4

2 回答 2

14

它们是独立的运算符,您重载哪一个取决于您传递给运算符的参数。

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
于 2012-06-11T07:05:39.553 回答
5

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

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

于 2012-06-11T07:32:36.437 回答