能力值:
( LV2,RANK:10 )
|
-
-
2 楼
c++11支持构造函数重用
|
能力值:
( LV8,RANK:130 )
|
-
-
3 楼
第一种,不是两个对象
|
能力值:
( LV5,RANK:70 )
|
-
-
4 楼
是啊,不过VC6不支持,很多人还是用C++98
|
能力值:
( LV5,RANK:70 )
|
-
-
5 楼
为何不是?愿闻其详。两个地址是不同的。
|
能力值:
( LV12,RANK:250 )
|
-
-
6 楼
Look 一下
|
能力值:
( LV15,RANK:670 )
|
-
-
7 楼
升级到 vs 2012 吧。
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
呵呵,欣赏一下。
|
能力值:
( LV5,RANK:70 )
|
-
-
9 楼
呵呵,这里只是提供一个编程方法而已,就算不在构造函数内调用构造函数,也还有很多变通的方法来实现目标功能,正如实现数据封装不一定要用C++的类,只是用它就方便点而已。
|
能力值:
( LV2,RANK:10 )
|
-
-
10 楼
楼主牛人,学习了
|
能力值:
( LV2,RANK:10 )
|
-
-
11 楼
目测不是版本问题,lz的代码在2012里面也是同样的情况
|
能力值:
( LV5,RANK:70 )
|
-
-
12 楼
呵呵,共同学习而已,离牛人还远。
|
能力值:
( LV5,RANK:70 )
|
-
-
13 楼
谢谢欣赏哈
|
能力值:
( LV2,RANK:10 )
|
-
-
14 楼
学习了,谢谢!
如果有构造函数重载的,我一般是写一个 CommonConstruct 函数,各个构造函数都调用这个
|
能力值:
( LV12,RANK:250 )
|
-
-
15 楼
网上有new(this)CNestedConst()这样更优雅的办法。说是this->CNestedConst::CNestedConst()这样的调用只适用于VC。。。
|
能力值:
( LV5,RANK:70 )
|
-
-
16 楼
谢谢告知,确实简洁了。
|
能力值:
( LV2,RANK:10 )
|
-
-
17 楼
太好了,以前只是以为C++的构造函数不能调用其他构造函数,根本没去多想,认为这是语法的特性而已。难得楼主有这种怀疑和专研的精神,才发现了这个新语法(反正我是第一次得知),感谢楼主
|
能力值:
( LV5,RANK:70 )
|
-
-
18 楼
不客气。不过我今天才知道原来已经有人用形如 new(this)Constructor() 这样的方式来调用了,有点遗憾。。。人嘛,都想当一次第一。呵呵。
|
能力值:
( LV2,RANK:10 )
|
-
-
19 楼
谢谢楼主分享
|
能力值:
( LV4,RANK:50 )
|
-
-
20 楼
你描述的这种情况在C++中叫隐式类型转换,你传了一个0进去,编译器发现你有一个可以接受int类型的构造函数,于是给你自动把0转型成CNestedConst,解决这个问题最好的办法是在初始化列表里:
CNestedConst()
:CNestedConst(0) //用有参数的构造函数初始化对象
{
};
|
能力值:
( LV5,RANK:70 )
|
-
-
21 楼
其实我这种方法是显式调用,不涉及到类型转换(如果你愿意可以再仔细看一遍帖子),灵活性就是可以多次、在任意地方调用。你说的方法只能在列表里调用一次,并且只有高版本的c++(如C++11)才支持这种调用。
|
能力值:
( LV4,RANK:50 )
|
-
-
22 楼
这个不是你说显示调用就是显示调用,这种语法编译器是会认为你要将0转型为类型,请站在机器的角度考虑问题。
|
能力值:
( LV5,RANK:70 )
|
-
-
23 楼
好吧,不跟你争了。建议你找个真正对C++有研究的人来看看这到底是显式还是隐式。
|
能力值:
( LV4,RANK:50 )
|
-
-
24 楼
建议你看一下 more effective c++ 的 Item M5,另外这种语法确实是生成匿名对象的语法,而不是调用构造函数。
|
能力值:
( LV5,RANK:70 )
|
-
-
25 楼
表示无语。明白人自然一眼能看出来,固执的人也没必要争论了。
|
|
|