首页 > 编程语言 > 详细

C++内置类型的成员变量初始值的问题探讨

时间:2015-03-09 12:49:52      阅读:302      评论:0      收藏:0      [点我收藏+]

最近碰到个问题,C++内置类型的成员变量(如int)的默认初始值到底是多少?

我的开发环境:VIN7 64位,VS2010。

测试代码:

class Solution {
public:
	int a;
	char c;
	static int sb;
};
Solution x;
void main()
{
	Solution s;
	void *pv = operator new(sizeof(Solution));
	Solution *ps = new (pv)Solution();
	Solution *ps2 = new Solution();
	delete ps2;
	ps->~Solution();
	operator delete (ps);
	int a = 0;
	cin >> a;
}


运行后通过监视面板检测变量值如下:

技术分享

发现全局变量x的内置类型初始化为0,局部变量s的内置变量没有初始化,通过动态创建的ps和ps2都初始化了,类变量sb的值没有初始化。

结果与C++Primer里面的结论一样:

技术分享

为何动态分配的局部对象会初始化内置变量呢?编译器是个任性的孩子哇。

更加有趣的来了。

然后增加一个类类型的成员变量:

class desT
{
public:
	desT(){ cout << "construct desT"<< endl; }
	int a;
	char c;
	static int sb;
};
class Solution {
public:
	int a;
	char c;
	static int sb;
	desT m_obj;
};
Solution x;
void main()
{
	Solution s;
	void *pv = operator new(sizeof(Solution));
	Solution *ps = new (pv)Solution();
	Solution *ps2 = new Solution();
	delete ps2;
	ps->~Solution();
	operator delete (ps);
	int a = 0;
	cin >> a;
}
运行后通过监视面板检测变量值如下:
技术分享

输出:

技术分享

为什么加了一个类成员变量动态创建的对象全部不初始化内置变量了呢?

编译器君你能告诉我吗?

C++内置类型的成员变量初始值的问题探讨

原文:http://blog.csdn.net/chenqin158741019/article/details/44152663

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!