初始化
c
支持复制初始化,不支持直接初始化
void init()
{
int i1 = 5;
//int i2(8);
}
c++
支持复制初始化,支持直接初始化
- 引入直接初始化主要为了支持类的初始化(构造函数),c++为了保持类型统一性,对非类类型也支持直接初始化
- 对于非类类型,直接初始化和复制初始化无区别
- 对于类类型,直接初始化可使用implicit构造函数,也可使用explicit构造函数,复制初始化可使用implicit构造函数,不可使用explicit构造函数,且复制初始化只允许传递一个参数
class CAnimal
{
public:
CAnimal() : mGroup(0)
{
cout << "CAnimal()" << endl;
}
CAnimal(int group) : mGroup(group)
{
cout << "CAnimal(" << group << ")" << endl;
}
CAnimal(const CAnimal &other) : mGroup(other.mGroup)
{
cout << "CAnimal(const CAnimal &other)" << endl;
}
private:
int mGroup;
};
void init()
{
int i1 = 5;
int i2(8);
CAnimal animal1(5);
CAnimal animal2 = 8;
}
output:
CAnimal(5)
CAnimal(8)