我不确定如何说出这个或它实际调用的内容,但我知道在Objective-C中你可以拥有多个可以相继调用的构造函数,原谅任何代码错误,我暂时没有做到这一点,但这个想法就在那里。
- (id)initWithTitle:(NSString *)_title;
- (id)initWithTitle:(NSString *)_title page:(NSString *)_page;
-----------------------------------
- (id)initWithTitle:(NSString *)_title {
return [self initWithTitle:_title page:nil];
}
- (id)initWithTitle:(NSString *)_title page:(NSString *)_page {
if(self = [super init]) {
self.title = _title;
self.page = _page;
}
return self;
}
我只是想知道在c ++中是否有相同的内容;
答案 0 :(得分:5)
在C ++ 11之前,你无法做到这一点,但从C ++ 11开始,你可以
class Foo {
int d;
public:
Foo (int i) : d(i) {}
Foo () : Foo(42) {} //new to c++11
};
答案 1 :(得分:4)
在C ++ 11中,您可以委托给其他构造函数:
Thing(string title) : title(title) {}
Thing(string title, string page) : Thing(title) {this->page = page;}
历史上,您可以在函数中执行共享工作:
Thing(string title) {init(title);}
Thing(string title, string page) {init(title); this->page = page;}
虽然在这样的简单情况下,你可能会更好地使用默认参数
Thing(string title, string page = "") : title(title), page(page) {}
答案 2 :(得分:2)
在C ++ 11中,您有Delegating构造函数: https://www.ibm.com/developerworks/community/blogs/5894415f-be62-4bc0-81c5-3956e82276f3/entry/introduction_to_the_c_11_feature_delegating_constructors?lang=en
Pre C ++ 11,一个构造函数无法调用另一个构造函数。在这种情况下,使用复制/粘贴或初始化所有变量的单个方法,并从多个构造函数调用。