1. 一般情况下,new出来的是类对象,加不加()调用的都是默认构造函数,因此没有区别。
代码如下:
class CText
{
public:
explicit CText()
{
cout << "Text!" << endl;
}
};
int main()
{
CText* pText1 = new CText;
CText* pText2 = new CText();
return 0;
}
输出结果如下:

2. 但是如果new出来的是基础数据类型,不加()是不会对开辟的空间做初始化,而加了()会对开辟的空间做初始化。
我们可以对该现象进行验证,代码如下:
char* ch1 = new char[20];
char* ch2 = new char[20]();
cout << ch1 << endl;
cout << ch2 << endl;
cout << "=========" << endl;
int* i1 = new int[1];
int* i2 = new int[1]();
cout << i1[0] << endl;
cout << i2[0] << endl;
输出结果:

总结:综上所述,无论哪种情况,在使用new的时候,最好把()也加入进去。
本文探讨了在C++中使用new操作符时,加括号与不加括号的区别。对于类对象,两者调用默认构造函数,无明显区别;但对于基础数据类型,加括号会进行初始化,不加则不会。建议在使用new时,始终包含括号。
2127

被折叠的 条评论
为什么被折叠?



