以下是引用wssy213在2014-8-31 09:12:05的发言:
不知道诶
不知道诶
因为C++并不是任何对象都可以复制赋值的,而这种语法正是基于复制赋值。在支持属性的语言中(比如MS的C++/CLI、C#),确实有这种初始化语法,但本地C++不支持属性(C++之父说暂时不考虑支持属性),所以也无法扩展这种语法。
C99引入了这种类似属性的语法,但C++没有,所以在主攻本地C/C++的人眼中,这种初始化语法就是偏门(也正是以前GNU虽然实际上支持但不是标准的原因),而这些原教旨主义者又对.NET支持属性的语法嗤之以鼻(虽然他们推崇的C99引入了人家的机制),这是很吊诡的事情。其实,对标准看淡一些,啥困惑都没有,我们要的是干实事,不是以守法为荣,怎么好用怎么来——觉得这种语法好,但标准C++不支持,就用可以支持的非“标准”平台呀,GNU之前非法支持(那就叫扩展)的时候不也是这样的么。
授人以渔,不授人以鱼。