[英]C++ - Constructors calling constructors
我不知道如何用它來表達它或它實際上被稱為什么,但我知道在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 ++中是否有相同的東西;
在C ++ 11之前,你無法做到這一點,但從C ++ 11開始,你可以做到
class Foo {
int d;
public:
Foo (int i) : d(i) {}
Foo () : Foo(42) {} //new to c++11
};
在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) {}
在C ++ 11中,您有委托構造函數: https : //www.ibm.com/developerworks/community/blogs/5894415f-be62-4bc0-81c5-3956e82276f3/entry/introduction_to_the_c_11_feature_delegating_constructors?lang=en
在C ++ 11之前,一個構造函數無法調用另一個構造函數。 在這種情況下,使用復制/粘貼或初始化所有變量的單個方法,並從多個構造函數調用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.