Contents

在C++的构造函数中我们应该把所有成员变量都初始化,如果我们忘记了初始化一个成员指针,会发生什么呢?

假设有如下代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
class my
{
public:
my(){};
~my(){delete[] r;}
private:
float* r;
};

class my2
{
private:
my m;
};

int main() {

float* f;
my m;
my2* m2= new my2();
//delete[] f;
return 0;
}

 

Visual Studio 2012调试结果如下:

image

Visual Studio 2008调试结果如下:

image

 

可以复习复习这个,oxcdcdcdcd是什么?

 

如果把上面代码类my的构造函数和析构函数注释掉,那么类my和my2就变成了POD。POD就是Plain Old Data Structure,就是C++中没有用户自己定义的构造函数,析构函数和虚函数的类,并且每个成员也是POD。

Visual Studio2012和2008的调试结果都如下:

image

Contents