本帖最后由 baizy77 于 2018-10-1 20:57 编辑
版权声明 --------------------------------------------------------------------------------------------------------------------- 作者: 女儿叫老白 (白振勇) 转载请注明出处! --------------------------------------------------------------------------------------------------------------------- -----------------------------------------------------------------------------
引言: ---------------------------------------------------------------------------- 通常,在C++编码规范中会要求对对象进行初始化。比如我们定义一个类对象,会通过其构造函数对其进行初始化;如果定义一个基本数据类型(如int),会通过赋初值的方式初始化,那么如果我们定义一组数据,该怎么初始化呢?
正文: ---------------------------------------------------------------------------- 我们这里所说的定义一组数据并对其初始化,指的就是聚合初始化。比如int a[4];这里定义了一个整数数组,它有4个成员,我们当然可以通过:
这样的方式来执行初始化操作。也可以通过遍历的方式来做:
- for (int idx=0; idx<4; idx++) {
- a[idx] = idx;
- }
复制代码
但是,还有一个更简单的方法:
通过这种语法,我们为数组a指定了第一个成员的值,后面的值没有指定,则编译器会自动将其赋为0(假设我们为第一个元素赋值为2,编译器仍然为后续元素自动赋0值)。所以,这是一种给数组初始化的简单方法。 有时候,我们懒得确定数组的初始元素个数,我们就会这样定义:
如果一旦需要增加元素,只需要在里面添加数值即可,而无需指定数组的大小。那么,我们该怎么确定其大小呢?其实可以通过下面的方法: - sizeof (a)/sizeof (*a);
- for (int idx=0; idx<(sizeof (a)/ sizeof (*a)) {
- cout << a[idx] << endl;
- }
复制代码
如果是class或struct,聚合初始化的方法也一样。
- class CMyClass {
- public:
- CMyClass(int n) : m_nVal(n){}
- CMyClass(const CMyClass&); // 拷贝构造函数
- private;
- int m_nValue;
- };
- CMyClass objects[3] = { CMyClass(1), CMyClass (3), CMyClass (4)};
复制代码
这种写法也是对每个成员直接进行初始化。
结语: ---------------------------------------------------------------------------- inta[3] = {0};这种编码方式是我们经常用到的。要善于运用sizeof()计算数组的尺寸。聚合初始化是我们对于一组对象进行初始化的常用方法,希望大家能熟练掌握。
参考资料 ---------------------------------------------------------------------------- 《C++编程思想》两卷合订本中文版(6.6章节),(美) Bruce Eckel Chuck Allison著 |