C++运算符重载的问题...
class Integer
{
private:
    int data;
public:
    Integer(int a):data(a){}
    Integer operator-(Integer &another)
    {
        Integer tmp(0);
        tmp.data= this->data-another.data;
        return tmp;
    }
    void show()
    {
        cout<<data<<endl;
    }
};

tmp= this->data-another.data;这样不写成tmp.data编译器也没报错,执行结果也正确,C++是会自动匹配吗

1个回答

#include <iostream>
using namespace std;

class Integer
{
private:
    int data;
public:
    Integer(int a):data(a){}
    void show()
    {
        cout<<data<<endl;
    }
};

int main()
{
    Integer a = 10;
   a.show();
   return 0;
}

看这个程序

它也会输出10
说明,a = Integer(10)和Integer a = 10是等价的
因此
tmp = this->data-another.data;
其实就是
tmp = Integer( this->data-another.data);
所以也能得到答案

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问