如果将运算符“* ”重载为某个类的成员运算符(也即成员函数),则该成员函数的参数个数是( )。

、如果将运算符“* ”重载为某个类的成员运算符(也即成员函数),则该成员函数的参数个数是( )。

A、1个
B、0个
C、0个1个均可
D、2个

C,0个1个均可。
0个类似于指针的解引用(dereference )运算,如:

 struct IntPtr {
    int *ptr_;
    int& operator*() { return *ptr_; }
};

1个类似算术乘法运算,如:

 Struct Integer {
     int val_;
     int operator*(Integer& rhs) { return val_ * rhs.val_; }
 };

a 1个
因为乘法是二元运算符,而成员函数省略掉自己了。

同意上面选择C的答案,但是不同意上面写运算符重载的函数。
如下代码:(使用了默认的拷贝构造函数)

class Test
{
public:
        Test(int t)
        {   
                a = t;
        }   

        ~Test(){}

        Test operator*()
        {   
                printf("argument 0\n");
                return Test(this->a);
        }   

        Test operator*(Test &t) 
        {   
                printf("argument 1\n");
                return Test(this->a * t.a);
        }   

        void output()
        {   
                printf("a value: %d\n", a); 
        }   

public:
        int a;

};

0个或1个,指针和乘法的重载