从一个类中的另一个构造函数调用一个构造函数

时间:2015-07-01 05:07:10

标签: constructor language-agnostic

我在网上遇到了以下问题。

如果我们在一个类中调用另一个构造函数,会发生什么?

有人能给我一些提示吗?

2 个答案:

答案 0 :(得分:4)

在Java中

也可以使用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++?的答案。