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的时候,最好把()也加入进去。