类的数组成员变量的初始化

使用STL标准模板库之后,编程时已经很少使用数组和指针,相反,多使用序列容器vector代替之。

但事实并不这么理想,在迫不得已的情况下,我们还是会选择使用数组。

这里介绍一下当数组作为类的成员变量时,应该怎么对它(数组)进行初始化。

在类的构造函数中可以使用成员初始化表初始化各个成员变量,这种方法是很受推荐和赞扬的,因为使用成员初始化表中对成员进行初始化和在构造函数体中对成员赋值是不同的,特别对于成员对象,在效率上是很有差别的(对于这一点不清楚的朋友们,可以查看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];
};




from: http://blog.sina.com.cn/s/blog_4d9b6da90100nnj8.html

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值