牛骨文教育服务平台(让学习变的简单)
博文笔记

C++ new 动态数组初始化

创建时间:2015-11-07 投稿人: 浏览次数:149

问题:红字部分的代码是否有问题?

代码是没有问题的,考虑的是new申请的内存有没有初始化?

在这段代码中,有无初始化是没有关系的,因为str字符串中已含有字符串结束标志。




inline mystring::mystring( const char* str )
{
	if (!str){
		m_pdata = 0;
	} 
	else{
<span style="color:#ff0000;">		m_pdata = new char[strlen(str)+1];
		strcpy(m_pdata,str);</span>
	}
}



动态数组初始化:


对于内置数据类型元素的数组,必须使用()来显示指定程序执行初始化操作,否则程序不执行初始化操作:

int *pia = new int[10]; // 每个元素都没有初始化

int *pia2 = new int[10] ();  // 每个元素初始化为0


类类型元素的数组,则无论是否使用(),都会自动调用其默认构造函数来初始化:

string *psa = new string[10];  // 每个元素调用默认构造函数初始化

string *psa = new string[10]();  // 每个元素调用默认构造函数初始化



参考:http://www.cnblogs.com/mywebname/articles/2291540.html

声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。