推 Ebergies:我覺得你可以說說堅持要這樣做的理由... 03/22 18:02
我覺得這個功能還不錯啦
(以下不是合法的 C++)
class T {
private:
int data = 0;
public:
T(); // default constructor
T(const string&); // some constructor
T(double); // another constructor
};
C++ 規定 non-static non-const member 初值只能寫在 constructor 內
但如果 constructor 有很多個
那每個都要一一去填初始值
這種重覆性高的動作不但累人 也容易出錯
如果可以在成員宣告的時候就設定初值
以上面的例子來說
不管呼叫哪個 constructor 都會把 data 設為 0
不失為一個方便的設計
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.217.30.97
推 Ebergies:lol 蠻有趣的, 現在應該都是用 initial() 之類實作的吧 03/22 19:15
推 Killercat:值得一提的是,C#解除了很多這方面的限制 03/22 19:25
→ Killercat:包含初始化不用寫在IL(Initialize List)內,而可以像 03/22 19:25
→ Killercat:c++的static const int(C++只有這個可以class內init)一 03/22 19:26
→ Killercat:樣,而且不在受限於只能static const int. 03/22 19:27
→ Killercat:這個基本上是好是壞就很難講,因為這會一定程度上造成 03/22 19:27
→ Killercat:"不同簽名的ctor要有不同的初始化值"這需求的行為 03/22 19:27
→ Killercat:不過實在是方便到靠杯也是真的,寫IL很累的 03/22 19:28
推 Tiberius:C++0x 可以在 ctor 裡面呼叫另一個 ctor 了 XD 03/22 20:03