C++运算符指针,乘法

C++ operator pointer, multiply

本文关键字:乘法 指针 运算符 C++      更新时间:2023-10-16

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

还是操作员是个人?

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 ),或者取一个自由函数两个论点。

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