考虑一下这段代码:
class complex{
private:
double re, im;
public:
complex(double _re, double _im):re(_re),im(_im){}
complex(complex c):re(c.re),im(c.im){}
};
Run Code Online (Sandbox Code Playgroud)
编译时,我收到一条错误消息: invalid constructor; you probably meant ‘complex (const complex&)’
在书中C++ Programming Language,写道:
复制构造函数定义了复制的含义 - 包括复制参数的含义 - 所以写作
complex:complex(complex c):re(c.re),im(c.im){} //错误
是一个错误,因为任何调用都会涉及无限递归.
为什么这会导致无限递归?这没有意义.
| 归档时间: |
|
| 查看次数: |
16636 次 |
| 最近记录: |