类的数组成员变量的初始化
2017-10-08 14:51
330 查看
类的数组成员变量的初始化
但事实并不这么理想,在迫不得已的情况下,我们还是会选择使用数组。
这里介绍一下当数组作为类的成员变量时,应该怎么对它(数组)进行初始化。
在类的构造函数中可以使用成员初始化表初始化各个成员变量,这种方法是很受推荐和赞扬的,因为使用成员初始化表中对成员进行初始化和在构造函数体中对成员赋值是不同的,特别对于成员对象,在效率上是很有差别的(对于这一点不清楚的朋友们,可以查看C++primer ed3 14.5,这里对此不细讲)。
那么,用惯了成员初始化表的朋友们,因为尝到了其甜头,通常在第一次对待成员数组时,都会选择成员初始化表,而这不但不会给我们带来好处,反而让我们碰了一鼻子灰,并且苦恼。
本文想说的就是:类的成员变量不能使用成员初始化表进行初始化,而只能通过在构造函数体中对数组的各个成员进行赋值。
class bb
{
public:
bb() : a[0](0) {} //出现c2059错误
bb(int (&a)[3]) :a[0](a[0]),a[1](a[1]),a[2](a[2]) {}//出现c2059错误
bb(int (&a)[3])
{
this->a ={a[0],a[1],a[2]}; //错误,不能使用初始化表
}
//正确写法:
bb()
{
this->a[0]= 0;
this->a[1]= 0;
this->a[2] =0;
}
bb(int (&a)[3])
{
this->a[0] =a[0];
this->a[1] =a[1];
this->a[2] =a[2];
}
int a[3];
};
相关文章推荐
- 类成员变量数组初始化方法解析
- 类的数组成员变量的初始化
- 常成员变量数组初始化的问题
- 常成员变量数组初始化的问题
- C++初始化列表问题,类中有一个对象类型的数组成员变量,在初始化列表中初始化时报错“[]”操作符语法错误
- 【c++程序】在数组对象中初始化成员变量
- 类的数组成员变量的初始化
- C++ 类中特殊的成员变量(常变量、引用、静态)的初始化方法
- 局部变量与成员变量的同名问题&显示初始化
- java初始化过程中成员变量
- [置顶] C++ static、const和static const类型成员变量声明以及初始化
- 局部变量和成员变量初始化的不同
- C++ 成员变量的初始化与构造函数
- C++类中初始化成员变量总结
- const 成员变量初始化规则
- C/C++ 通过初始化列表和构造函数内赋值初始化成员变量的区别
- c++数据成员变量初始化顺序问题及特殊成员变量类型初始化
- C++中各种类型的成员变量的初始化方法
- 在构造函数的参数化列表中调用基类构造函数初始化继承来的成员变量
- C++常量折叠和类中const、static成员变量初始化