Destroy A
4,默认构造函数时类对象的初始化
class CA
{
public:
int _i;
// 默认构造函数
};
CA* a1 = new CA; // a1是未初始化的
std::cout << "i1: " << a1->_i << std::endl;
CA* a2 = new CA(); // a2是初始化过的
std::cout << "i2: " << a2->_i << std::endl;
CA a3; // a3是未初始化的
std::cout << "i3: " << a3._i << std::endl;
//CA a4(); // error
//std::cout << "i: " << a4._i << std::endl;
delete a1;
delete a2;
输出如下:
i1: -842150451
i2: 0
i3: -858993460
5,自己提供构造函数时类对象的初始化
class CB
{
public:
int _i;
CB() // 自己提供无参构造函数
{
std::cout << "CB()" << std::endl;
_i = 100;
}
};
CB* b1 = new CB; // b1是未初始化的
std::cout << "i1: " << b1->_i << std::endl;
CB* b2 = new CB(); // b2是初始化过的
std::cout << "i2: " << b2->_i << std::endl;
CB b3; // b3是未初始化的
std::cout << "i3: " << b3._i << std::endl;
//CB b4(); // error
//std::cout << "i: " << b4._i << std::endl;
delete b1;
delete b2;
输出如下:
CB()
i1: 100
CB()
i2: 100
CB()
i3: 100
6,自己提供有参构造函数时类对象的初始化
class CC
{
public:
int _i;
CC(int i) // 自己提供构造函数,但没有提供无参的构造函数
{
std::cout << "CC(int i)" << std::endl;
_i = i;
}
};
//CC* c1 = new CC; // error,找不到默认(系统提供)或者无参的构造函数
//std::cout << "i1: " << c1->_i << std::endl;
//CC* c2 = new CC(); // error,找不到默认(系统提供)或者无参的构造函数
//std::cout << "i2: " << c2->_i << std::endl;
//CC c3; // error,找不到默认(系统提供)或者无参的构造函数
//std::cout << "i3: " << c3._i << std::endl;
//CC c4(); // error
//std::cout << "i: " << c4._i << std::endl;
CC* c5 = new CC(100); //
std::cout << "i: " << c5->_i << std::endl;
CC c6(100); //
std::cout << "i: " << c6._i << std::endl;
//delete c1;
//delete c2;
delete c5;
输出如下:
CC(int i)
i: 100
CC(int i)
i: 100