-
传值:只是利用了原变量的值,不会对原变量有任何影响。
-
传引用:相当于给原变量起了一个别名,原变量与新变量对应同一个值,因此对新变量的操作会影响到新变量。
-
传地址:其实还是一种传值的操作,特殊的地方是传递的值是原变量的地址。由于这个地址指向原变量,所以通过这个地址可以改变原变量的值。
#include <iostream>
using namespace std;
class complex
{
private:
int re;
int im;
public:
complex(int r ,int i ); //错误写法, complex(int r = 0,int i = 0 );
~complex();
inline int real() const { return re;} //内联函数
inline int imag() const { return im;}
complex operator+ (complex &n);
};
complex::complex(int r = 0 ,int i = 0 )
: re (r),im (i) //构造函数的初始化列表
{
//re = r;
//im = i;
}
complex::~complex()
{
}
complex complex::operator+ (complex &n)
{
return complex (this->real() + n.real(),this->imag() + n.imag());
}
ostream & operator<<(ostream &os,complex n)//修改的地方
{
os << n.real() << "+" << n.imag() << "i";
return os;
}
main()
{
complex a(4,5);
complex b(1,1);
//complex c = a+b;
cout << a+b << endl;
return 0;
}
将这行代码:
ostream & operator<<(ostream &os,complex &n)
修改为:
ostream & operator<<(ostream &os,complex n)
结论:
a+b,这样的语句创建的是一个临时对象,我们可以进行传值、赋值的操作,但是不能传引用。