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

时间:2012-06-11 07:04:48

标签: c++ overloading operator-keyword

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

或者运营商是个人?

C ++

2 个答案:

答案 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 二进制版本可以隐藏一元文本,反之亦然。