设为首页 加入收藏

TOP

effectiveC++(十四)(四)
2010-12-26 23:10:54 来源: 作者: 【 】 浏览:4193
Tags:effectiveC 十四
很好的准则,大多数情况都适用。但不幸的是,当类里没有虚函数的时候,也会带来非虚析构函数问题。 例如,条款13里有个实现用户自定义数组下标上下限的类模板。假设你(不顾条款m33的建议)决定写一个派生类模板来表示某种可以命名的数组(即每个数组有一个名字)。

template                // 基类模板
class array {                    // (来自条款13)
public:
  array(int lowbound, int highbound);
  ~array();

private:
  vector data;
  size_t size;
  int lbound, hbound;
};

template
class namedarray: public array {
public:
  namedarray(int lowbound, int highbound, const string& name);
  ...

private:
  string arrayname;
};

如果在应用程序的某个地方你将指向namedarray类型的指针转换成了array类型的指针,然后用delete来删除array指针,那你就会立即掉进“不确定行为”的陷阱中。

namedarray *pna =
  new namedarray(10, 20, "impending doom");

array *pa;

...


pa = pna;                // namedarray* -> array*

...

delete pa;   

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

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: