- 当构造函数是private对象时,不能用于使用构造函数初始化,即complex c1; 调用构造函数是错误的;当不允许外界创建对象时,可以把构造函数放在private里面;
- class 函数参数最好引用传值;不想修改值,可用 const complex& 常量的形式。能引用形参的时候优先考虑引用,其次值传递
- 友元类和友元函数
返回类型*ths- 不能传引用的情况:引用和指针传值区分
- 返回引用
![]()
返回值类型complex(x+real(y), imag(y)) ,类似(int) i,强制转换,创建的是临时对象。
这个函数返回必须不能是引用,因为返回是临时对象local object
返回值为值传递,不用引用传递
两例特殊操作符,只能设置global(全局)函数。问:其他类型是否冲突?
<< 操作符不能是<< const定义,不然ostream& os的os就是常量,每次输出都在改变os的状态,联想:是否跟缓冲区或者cerr和clog有关?
- //返回ostream的os类型,是为了连续输出 cout<<c1<<conj(c1); conj指共轭复数函数
//不能是void类型,void类型满足单次输出
ostream& operator << (ostream& os, const complex& x)
{
return os << "(" << real(x) << "+" << imag(x) << 'i'
<< ")";
}
- 带指针的类的编写,拷贝构造/赋值等函数必须自己编写,不能使用编译器的版本;不带指针的类的拷贝函数可以使用编译器的每个字节拷贝的方式,而不用自己编写
![]()
浅拷贝&深拷贝:深拷贝&浅拷贝
- 拷贝赋值:清空左边原来的内容,生成与右边相同大小的空间,然后右边内容拷贝到左边

- 局部、静态、全局变量:
1. 局部:在作用域结束之时结束,会被自动清理
2. 静态:在作用域结束之后仍然存在,直到整个程序结束
3. 全局:在整个程序结束之后才结束,作用域是整个程序
返回类型*ths



浙公网安备 33010602011771号