1、临时变量不可以作为非常量传引用的参数
例:
#include <iostream>
using namespace std;
class MyInt {
int nVal;
public:
MyInt(int n) { nVal = n; }
int ReturnVal() { return nVal; }
MyInt & operator -(const MyInt & n){
return MyInt(nVal-n.nVal);//本身的成员变量值应该也要变 }
};
int main () {
MyInt objInt(10);
objInt-2-1-3;
cout << objInt.ReturnVal();
cout <<",";
objInt-2-1;
cout << objInt.ReturnVal();
return 0;
}
报错:
4w4.cpp: In member function ‘MyInt& MyInt::operator-(const MyInt&)’:
4w4.cpp:10:29: error: invalid initialization of non-const reference of type ‘MyInt&’ from an rvalue of type ‘MyInt’
return MyInt(result);
修改:
#include <iostream>
using namespace std;
class MyInt {
int nVal;
public:
MyInt(int n) { nVal = n; }
int ReturnVal() { return nVal; }
MyInt & operator -(const MyInt & n){
nVal-=n.nVal;
return *this;
}
};
int main () {
MyInt objInt(10);
objInt-2-1-3;
cout << objInt.ReturnVal();
cout <<",";
objInt-2-1;
cout << objInt.ReturnVal();
return 0;
}
输出:
4,1