Re: [問題] class內部可以new東西嗎?

看板C_and_CPP (C/C++)作者 (我要加入劍道社!)時間16年前 (2009/03/22 19:10), 編輯推噓3(306)
留言9則, 3人參與, 最新討論串2/2 (看更多)

03/22 18:02,
我覺得你可以說說堅持要這樣做的理由...
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

03/22 19:15, , 1F
lol 蠻有趣的, 現在應該都是用 initial() 之類實作的吧
03/22 19:15, 1F

03/22 19:25, , 2F
值得一提的是,C#解除了很多這方面的限制
03/22 19:25, 2F

03/22 19:25, , 3F
包含初始化不用寫在IL(Initialize List)內,而可以像
03/22 19:25, 3F

03/22 19:26, , 4F
c++的static const int(C++只有這個可以class內init)一
03/22 19:26, 4F

03/22 19:27, , 5F
樣,而且不在受限於只能static const int.
03/22 19:27, 5F

03/22 19:27, , 6F
這個基本上是好是壞就很難講,因為這會一定程度上造成
03/22 19:27, 6F

03/22 19:27, , 7F
"不同簽名的ctor要有不同的初始化值"這需求的行為
03/22 19:27, 7F

03/22 19:28, , 8F
不過實在是方便到靠杯也是真的,寫IL很累的
03/22 19:28, 8F

03/22 20:03, , 9F
C++0x 可以在 ctor 裡面呼叫另一個 ctor 了 XD
03/22 20:03, 9F
文章代碼(AID): #19nXobvh (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #19nXobvh (C_and_CPP)