自己的总结:都会执行默认构造函数,带()会进行值的初始化
(1)定义一个类:
class Test
{
public:
int data;
};
测试:
Test* x = new Test();//都会执行默认构造函数,会进行值的初始化
Test* y = new Test;//不会进行值的初始化
cout << x->data << endl;
cout << y->data << endl;
int* x1 = new int();//都会执行默认构造函数,会进行值的初始化
int* y1 = new int;//不会进行值的初始化
cout << *x1 << endl;
cout << *y1 << endl;
运行结果:
(2)修改构造函数:添加构造函数
class Test
{
public:
Test()
{
}
int data;
};
Test* x = new Test();//都会执行默认构造函数,会进行值的初始化
Test* y = new Test;//不会进行值的初始化
cout << x->data << endl;
cout << y->data << endl;
(3)在构造函数中初始化值
class Test
{
public:
Test():data()
{
}
int data;
};
Test* x = new Test();//都会执行默认构造函数,会进行值的初始化
Test* y = new Test;//不会进行值的初始化
cout << x->data << endl;
cout << y->data << endl;