benxintuzi

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

2015年5月24日

摘要: C++明确指出:当派生类对象是由一个基类指针释放的,而基类中的析构函数不是虚函数,那么结果是未定义的。其实我们执行时其结果就是:只调用最上层基类的析构函数,派生类及其中间基类的析构函数得不到调用。 1 #include 2 3 using namespace std; 4 5 class Ti... 阅读全文
posted @ 2015-05-24 15:22 benxintuzi 阅读(300) 评论(0) 推荐(0)

摘要: 聚合:类型之间的一种关系,就是一种类型内含有另一种类型的变量。has-a: 1 class Address 2 { 3 4 }; 5 6 class PhoneNumber 7 { 8 9 };10 11 class Person12 {13 public:14 15 ... 阅读全文
posted @ 2015-05-24 13:36 benxintuzi 阅读(237) 评论(0) 推荐(0)

摘要: 在继承中,分为两类函数:virtual和non-virtual。而重新定义一个非虚函数是不好的(条款36),那么以下的讨论就是如何定义继承而来的虚函数。强调:虚函数是动态绑定的,而缺省参数值是静态绑定的。 1 #include 2 3 class Shape 4 { 5 public: 6 ... 阅读全文
posted @ 2015-05-24 12:02 benxintuzi 阅读(384) 评论(0) 推荐(0)

摘要: 1 #include 2 3 using namespace std; 4 5 class Base 6 { 7 public: 8 void mf(); 9 };10 void Base::mf()11 {12 cout mf(); // 调用Base:... 阅读全文
posted @ 2015-05-24 10:59 benxintuzi 阅读(178) 评论(0) 推荐(0)

摘要: 在设计类的继承时,一般有三种想法:1 只继承函数接口2 继承函数接口及其实现,并且允许修改该实现3 继承函数接口及其实现,但是不允许修改该实现考虑如下例子: 1 #include 2 3 class Shape 4 { 5 public: 6 virtual void draw() = ... 阅读全文
posted @ 2015-05-24 10:36 benxintuzi 阅读(322) 评论(0) 推荐(0)

摘要: • 此例中混合了纯虚函数、虚函数、非虚函数等,只是为了强调隐藏的是继承而来的名字,至于名字代表的是什么并不重要,即使enum、nested class、typedef也不例外。 1 #include 2 3 using namespace std; 4 5 class Base 6 { 7 p... 阅读全文
posted @ 2015-05-24 09:31 benxintuzi 阅读(175) 评论(0) 推荐(0)