重载注意事项
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, im;
friend complex& __doapl (complex*, const complex&);
};
思考下面问题1:
下面两段代码可以共同存在?(重载)
complex (double r = 0, double i = 0)
: re (r), im (i) // 初始化高级用法
{ }
complex () : re (r), im (i) { }
解析:
不可以!!!表达相同意思!!!
思考下面问题2:
double real () const { return re; }
void real(double r) { re = r; }
解析:
可以!!!
因为:
real函数编译后的实际名称可能是:
?real@Complex@@QBENXZ
?real@Complex@@QAENABN@Z
看似相同,但编译后名称实际不同!!!