我能从C++中的另一个构造函数(构造函数链接)调用构造函数吗?

作为一名C#开发人员,我习惯于运行构造函数:

类测试{
公开考试(){
DoSomething();
}
公共测试(int计数):this(){
DoSomethingWithCount(计数);
}
公共测试(整数计数,字符串名称):此(计数){
dosomethingwhithname(name);
}
}

在C++中有没有办法做到这一点?

我尝试调用类名并使用’this’关键字,但都失败了

C++11:是的

C++11及以后的版本也有同样的特性(称为委托构造函数)

语法与C#略有不同:

类Foo{
公众:
Foo(char x,int y){}
Foo(inty):Foo('a',y){
};

C++03:否

不幸的是,在C++03中无法做到这一点,但有两种方法可以模拟这一点:

  1. 可以通过默认参数组合两个(或更多)构造函数:

    类Foo{
    公众:
    Foo(char x,int y=0);//组合了两个构造函数(char)和(char,int)
    // ...
    };
    
  2. 使用init方法共享公共代码:

    类Foo{
    公众:
    Foo(charx);
    Foo(字符x,整数y);
    // ...
    私人:
    void init(字符x,整数y);
    };
    Foo::Foo(char x)
    {
    初始(x,int(x)+7);
    // ...
    }
    Foo::Foo(字符x,整数y)
    {
    init(x,y);
    // ...
    }
    void Foo::init(字符x,int y)
    {
    // ...
    }
    

请参阅C++常见问题解答条目以获取参考

发表评论