作者littleshan (我要加入剑道社!)
看板C_and_CPP
标题Re: [问题] class内部可以new东西吗?
时间Sun Mar 22 19:10:27 2009
1F:推 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
2F:推 Ebergies:lol 蛮有趣的, 现在应该都是用 initial() 之类实作的吧 03/22 19:15
3F:推 Killercat:值得一提的是,C#解除了很多这方面的限制 03/22 19:25
4F:→ Killercat:包含初始化不用写在IL(Initialize List)内,而可以像 03/22 19:25
5F:→ Killercat:c++的static const int(C++只有这个可以class内init)一 03/22 19:26
6F:→ Killercat:样,而且不在受限於只能static const int. 03/22 19:27
7F:→ Killercat:这个基本上是好是坏就很难讲,因为这会一定程度上造成 03/22 19:27
8F:→ Killercat:"不同签名的ctor要有不同的初始化值"这需求的行为 03/22 19:27
9F:→ Killercat:不过实在是方便到靠杯也是真的,写IL很累的 03/22 19:28
10F:推 Tiberius:C++0x 可以在 ctor 里面呼叫另一个 ctor 了 XD 03/22 20:03