作为一名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中无法做到这一点,但有两种方法可以模拟这一点:
-
可以通过默认参数组合两个(或更多)构造函数:
类Foo{ 公众: Foo(char x,int y=0);//组合了两个构造函数(char)和(char,int) // ... }; -
使用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++常见问题解答条目以获取参考