设为首页 加入收藏

TOP

effectiveC++(十二)(四)
2010-12-26 23:08:03 】 浏览:5724
Tags:effectiveC 十二
nt a, b, c, d, e, f, g, h;
  double i, j, k, l, m;
};

假如想把所有的int初始化为1而所有的double初始化为0,那么用成员初始化列表就要这样写:

manydatambrs::manydatambrs()
: a(1), b(1), c(1), d(1), e(1), f(1), g(1), h(1), i(0),
  j(0), k(0), l(0), m(0)
{ ... }

manydatambrs::manydatambrs(const manydatambrs& x)
: a(1), b(1), c(1), d(1), e(1), f(1), g(1), h(1), i(0),
  j(0), k(0), l(0), m(0)
{ ... }

这不仅仅是一项讨厌而枯燥的工作,而且从短期来说它很容易出错,从长期来说很难维护。

然而你可以利用固定数据类型的(非const, 非引用)对象其初始化和赋值没有操作上的不同的特点,安全地将成员初始化列表用一个对普通的初始化函数的调用来代替。

class manydatambrs {
public:
  // 缺省构造函数
  manydatambrs();

  // 拷贝构造函数
  manydatambrs(const manydatambrs& x);

private:
  int a, b, c, d, e, f, g, h;
  double i, j, k, l, m;

  void init();        // 用于初始化数据成员
                     
};

void manydatambrs::init()
{
  a = b = c = d = e = f = g = h = 1;
  i = j = k = l = m = 0;
}

manydatambrs::manydatambrs()
{
  init();

  ...

}

首页 上一页 1 2 3 4 5 下一页 尾页 4/5/5
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇effectiveC++(十三) 下一篇effectiveC++(十一)

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目