{
m_real = r;
m_imag = 0.0;
}
// 等号运算符重载
// 注意,这个类似复制构造函数,将=右边的本类对象的值复制给等号左边的对象,
它不属于构造函数,等号左右两边的对象必须已经被创建
// 若没有显示的写=运算符重载,则系统也会创建一个默认的=运算符重载,只做
一些基本的拷贝工作
Complex &
operator
=(
const
Complex &rhs )
{
// 首先检测等号右边的是否就是左边的对象本,若是本对象本身,则直接返回
if
(
this
== &rhs )
{
return
*
this
;
}
// 复制等号右边的成员到左边的对象中
this
->m_real = rhs.m_real;
this
->m_imag = rhs.m_imag;
// 把等号左边的对象再次传出
//
目的是为了支持连等 eg: a=b=c
系统首先运行 b=c
//
然后运行 a= ( b=c 的返回值,这里应该是复制 c 值后的 b 对象)
return
*
this
;
}
};
下面使用上面定义的类对象来说明各个构造函数的用法:
void
main()
{
// 调用了无参构造函数,数据成员初值被赋为 0.0
Complex c1,c2;
// 调用一般构造函数,数据成员初值被赋为指定值
Complex c3(1.0,2.5);
// 也可以使用下面的形式
Complex c3 = Complex(1.0,2.5);
// 把 c3 的数据成员的值赋值给 c1
// 由于 c1 已经事先被创建,故此处不会调用任何构造函数