1.引例
class complex { public: complex(double r = 0, double i = 0) : re (r), im (i) {} complex& operator += (const complex&); double real() const { return re; } double imag() const { return im; } private: double re; double im; friend complex& __doapl(complex*, const complex&); };
2.const使用
类class里面的函数分两种:
- 会改变数据 :不能加const;
- 确定不会改变数据 :立马加const(强烈建议);
对于引例中的类,可能的调用方式:
//方式1: { complex c1(2,1); cout << c1.real(); cout << c1.imag();}
//方式2:只有函数在对的位置加了const才支持 { const complex c1(2,1);//将c1定义为常量 cout << c1.real(); cout << c1.imag();}
为什么强烈建议,对于不会改变数据的函数,立马加const?
因为类设计出来是要给人使用,要充分考虑使用者会怎么使用。上面的例子加了const,才支持方法2的调用,若没加const,则编译器报错。
参考资料:
1.www.geekband.com 侯捷C++基础课视频,B站