C++默认初始化

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xiongya8888/article/details/89390440

如果定义变量时没有指定初始值,则变量被默认初始化,此时变量被赋予了默认值,默认值到底是什么由变量类型和位置决定。

内置类型的默认初始化

函数体外初始化为0,函数体内不被初始化,使用new初始化的值是随机的。

int g_value;
 
int main(void)
{
	int value;//C4700	使用了未初始化的局部变量“value”
	int* newValue = new int;
	std::cout << *newValue << std::endl;
	std::cout << g_value << std::endl;
	std::cout << value << std::endl;
	system("pause");
	return 0;
}

类类型的默认初始化

定义一个类变量但没有指定初始值时,会使用默认构造函数来初始化,所以没有默认构造函数的类不能默认初始化,函数体外定义的类变量会在模块入口点被初始化,例如windows下的mainCRTStartup。

类的数据成员是内置类型时,如果类变量定义在函数体外,则被初始化为0,函数体内则是一个随机值。

class Person
{
public:
	int height;
	Person() 
	{
		std::cout << "hello!"<< std::endl;
	}
};

Person g_person;
 
int main(void)
{
	Person localPerson;
	std::cout << localPerson.height << std::endl;
	std::cout << g_person.height << std::endl;
	system("pause");
	return 0;
}
hello!
hello!
688440576
0

猜你喜欢

转载自blog.csdn.net/xiongya8888/article/details/89390440
今日推荐