我在网上遇到了以下问题。
如果我们在一个类中调用另一个构造函数,会发生什么?
有人能给我一些提示吗?
答案 0 :(得分:4)
也可以使用this
关键字的强大功能。看看下面给出的例子。
public class A {
public A() {
//this("a");
System.out.println("inside default Constructor");
}
public A(String a){
this();
System.out.println("inside Constructor A");
}
}
这个概念叫做构造函数链接。如果它是c#我发现这说可能Is nesting constructors (or factory methods) good, or should each do all init work
答案 1 :(得分:1)
MSDN的这个例子澄清了它
要添加委托构造函数,请使用constructor (. . .) : constructor (. . .)
语法。
class class_a {
public:
class_a() {}
// member initialization here, no delegate
class_a(string str) : m_string{ str } {}
// can’t do member initialization here
// error C3511: a call to a delegating constructor shall be the only member-initializer
class_a(string str, double dbl) : class_a(str) , m_double{ dbl } {}
// only member assignment
class_a(string str, double dbl) : class_a(str) { m_double = dbl; }
double m_double{ 1.0 };
string m_string;
};
也可以阅读Can I call a constructor from another constructor (do constructor chaining) in C++?的答案。