这是因为第十三行拷贝构造函数的影响.....调了好久才发现,然后 第二个代码可以直接避免这种影响。
#include<iostream>
using namespace std;
class CRange{
protected:
int width,height;
public:
CRange(){width = height = 0;}
CRange(int wid=0,int hei=0){
width=wid;
height=hei;
// cout<<"构造函数被调用"<<endl;
}
// CRange(CRange &ran);
CRange operator +(CRange &b)
{
return CRange(width+b.width,height+b.height);
}
CRange operator -(const CRange &b);
};
//CRange CRange ::operator +(const CRange &b)
CRange CRange ::operator -(const CRange &b)
{
return CRange(width-b.width,height-b.height);
}
/*CRange::CRange(CRange &ran){
cout<<"复制构造函数被调用"<<endl;
}*/
int main()
{
CRange ran1(10,20);
}
#include<iostream>
using namespace std;
class CRange{
protected:
int width,height;
public:
CRange(int wid=0,int hei=0){
width=wid;
height=hei;
cout<<"构造函数被调用"<<endl;
}
CRange(CRange &ran);
CRange operator +(const CRange &b);
CRange operator -(const CRange &b);
};
CRange CRange ::operator +(const CRange &b)
{
CRange A;
A.width = width+b.width;
A.height= height+b.height;
return A;
}
CRange CRange ::operator -(const CRange &b)
{
CRange A;
A.width = width-b.width;
A.height= height-b.height;
return A;
}
/*CRange::CRange(CRange &ran){
cout<<"复制构造函数被调用"<<endl;
}*/
int main()
{
CRange ran1(10,20);
}