能力值:
( LV2,RANK:10 )
|
-
-
2 楼
我擦,以前没有注意,一直这么写代码的
|
能力值:
( LV3,RANK:30 )
|
-
-
3 楼
你的UrlSniffer不更新了吗?.......
|
能力值:
( LV4,RANK:50 )
|
-
-
4 楼
c++11之后,正确的方式是
CTest() : CTest(0)
{
}
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
支持一下,
|
能力值:
( LV5,RANK:60 )
|
-
-
6 楼
按照构造函数的顺序 基类构造函数->成员类构造函数->派生类构造函数,所以会有两次 成员类构造函数。一般不会本类的构造函数调用本类的构造函数,会提取到一个私有类成员函数中。
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
有什么好的需求点吗
|
能力值:
( LV3,RANK:20 )
|
-
-
8 楼
this->CTest::CTest(0); 这是干什么用的?
创建一个类你可以这样 CTest test(0);
调用类成员你可以test(0);
this->CTest::CTest(0);我可以理解为手动的调用了CTest(0)?
那么既然你手动调用了CTest(0),就该手动调用this->CTest::~CTest(0); 进行析构
this->CTest::CTest(0);仅仅是调用了该函数,与创建对象没有半毛钱关系,
但是CMember的确多构造出来一次,那是因为C++将类成员的初始化汇编代码放到了所有构造函数里....
所以,这不是什么C++或者编译器的BUG,正确的代码是这样滴
CTest()
{
this->CTest::CTest(0);
this->CTest::~CTest(0);
}
以上是我的个人理解,如有问题请指正~
|
能力值:
( LV2,RANK:10 )
|
-
-
9 楼
不知道楼主为什么要这样写。…………………………
|
能力值:
( LV2,RANK:10 )
|
-
-
10 楼
为什么要调用其他构造函数?
有这种需求主要是因为存在多个构造函数的时候,多个函数间有一些公用的部分。常见的处理办法是将公用部分提取出来形成一个子函数由构造函数来调用。但是如果构造函数可以直接调用的话,就能更省事一些。C++11中也已经出现了构造函数调用其他构造函数的新语法,说明这种需求是确实存在的。这里提到的方法是一种兼容低版本c++的方法(价值所在,如果c++11普及了,这种方法也没用了),之前一直在用,最近才发现问题。
其实这个问题的原理也不复杂,大家都能明白。之前一直误用,也没有多想。
|
能力值:
( LV3,RANK:20 )
|
-
-
11 楼
还是没明白:构造函数调用其他构造函数,这是什么意思
我只在你的代码里看到同一个类调用了两次构造.
我认为显示调用构造本身就是有问题的
从0051719h处可以看出,显式调用构造函数会导致该类的所有成员变量被重新初始化
那么如下代码,m_n的值将会是0!
CTest()
{
m_n = 10;
this->CTest::CTest(0);
cout << m_n;
}
|
能力值:
( LV4,RANK:40 )
|
-
-
12 楼
这完全就是一个成员变量的生命周期的问题。。。。
|
|
|