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

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

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

c++

3个回答

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

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_; }
 };

同意上面选择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;

};

henuyx
Heart09 那个成员a,改成private比较严谨一点。
接近 5 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问