有参构造函数中可以调用无参构造函数吗?为什么?求解答
我想要现在有参构造函数中使用无参构造函数可以吗?
首先,构造函数是写在类内部的,要是调用无参构造那说明你正在创建一个默认对象。
我觉得这样是很不合理的,因为你调用无参或者有参构造是为了创建对象,那么在用有参创造对象的时候顺便创建了无参的对象,好像很尴尬。
强行调用就是这样:
class Person
{
int age;
string name;
Person() {}
Person(int Age, string Name) {
Person p;
}
};
不行啊,调用构造函数,等于是构造一个新对象了啊
C++11可以,被调用的那个构造函数叫着delegating constructor。
如果你的编译器不支持C++11,可以考虑定义一个init()成员函数用来初始化,然后其他构造函数都调用这个成员函数来初始化。
参考
https://en.cppreference.com/w/cpp/language/constructor#Delegating_constructor
class Foo
{
public:
Foo(char x, int y) {}
Foo(int y) : Foo('a', y) {} // Foo(int) delegates to Foo(char, int)
};