我看到下面两个类定义声称是等价的。真的吗?如何?谢谢。
class complex{
double re, im;
public:
complex( ): re(0) , im(0) { }
complex (double r): re(r), im(0) { }
complex (double r, double i): re(r), im(i) { }
};
class complex{
double re, im;
public:
complex (double r=0, double i=0): re(r), im(i) { }
};
最佳答案
第一个单独列出所有可能性(无参数、一个参数、两个参数)(overloading),第二个只需要一个函数,因为使用了default parameters。 ,它完全相同但更短。
如果变量的初始化不仅仅是为它们赋值,或者您希望根据参数数量使用完全不同的构造函数,那么第一个仍然有用。
关于c++ - 关于类定义的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5233528/