集合初始化需要注意的一个问题
集合就是多个事物聚集在一起的总体,集合包括数组、结构体、类
对于内部类型数组,我们可以这样定义
int a[5] = {1,2,3,4,5};
int b[5] = {0};
int c[] = {1,2,3,4,5};
对于一个结构体,我们也可以使用{}初始方式,如下
struct X
{
int i;
float f;
};
X x1 = {1,1.1};
X x2[3] = {{1,1.1},{2,2.2}}//第三个对象会初始化为0
但如果我们的类中有私有成员,或者所有的成员变量都是公有成员但存在有构造函数,我们就不能简单的使用{}初始化方法了,所有的初始化工作必须通过构造函数完成
#include <iostream>
using namespace std;
class X
{
public:
int i;
float f;
X(){ cout << "默认构造函数" << endl; }
X(int e, float q):i(e), f(q) { cout << "构造函数" << endl; }
};
int main()
{
//X a = {0,0}; //编译出错,因为需要调用构造函数才能初始化
X b[2]; //使用默认构造函数进行初始化
X c[3] = {X(1,1.1), X(2,2.2)}; //使用一般构造函数进行初始化
return 1;
}
运行结果:
默认构造函数
默认构造函数
构造函数
构造函数
默认构造函数
通过辨识类和结构体的初始化方式的不同,可以认为类并不是一个严格意义上的集合
作者 yucan1001
补充:软件开发 , C语言 ,