effectiveC++(十二)(二)

2010-12-26 23:08:03 · 作者: · 浏览: 3902
对象包含一个现有名字的引用,情况会非常不同。但还是要在构造函数的初始化列表里对引用进行初始化。还可以对名字同时声明const和引用,这样就生成了一个其名字成员在类外可以被修改而在内部是只读的对象。

template<class t>
class namedptr {
public:
  namedptr(const string& initname, t *initptr);
  ...

private:
  const string& name;               // 必须通过成员初始化列表
                                    // 进行初始化

  t * const ptr;                    // 必须通过成员初始化列表
                                    // 进行初始化
};

然而前面最初的类模板不包含const和引用成员。即使这样,用成员初始化列表还是比在构造函数里赋值要好。这次的原因在于效率。当使