(注意:經測試,VS2010 不支持該特性)
C++0x帶來的委托構造函數(delegate constructor),說白了,其實就是在某一個構造函數中調用另外一個構造函數,實際上,類似的特性在Java中早已經存在了,好像就是在構造函數之后跟上Base()來實現的。
委托構造函數確實能夠帶來一些便利,常常,我們需要在兩個相類似的構造函數中實現相同的功能,在以往,我們也許會通過將這些相同的功能集中到一個init()中來實現,兩個構造函數調用同一個函數。現在C++0x有了委托構造函數,我們可以將這些相同的功能在某個基礎的構造函數中實現,另外一個構造函數調用這個基礎構造函數就可以了。一個簡單的例子是:
#include <iostream> using namespace std; // 正數類 class PositiveNumber { public: // 帶參數的構造函數,附帶了對參數進行檢查的功能 PositiveNumber(int x) { if( x < 0) throw "必須為正數"; _x = x; } // 不帶參數的默認構造函數,以1為參數委托調用帶參數的構造函數 PositiveNumber(): Positive{1} {}
private: int _x; };
int main(int argc, char *argv[]) { PositiveNumber one; PositiveNumber two(2); return 0; }
委托構造函數,省去了為了實現共同功能需要另外的intit()函數,為編碼帶來了便利。 轉自: http://blog.csdn.net/shellching/archive/2010/04/20/5506019.aspx
|