dynamic_cast支持运行时识别指针或引用所指向的对象。从基类指针获得派生类行为最好的办法是通过虚函数。但是在某些情况下,无法使用虚函数,就需要手动显示转换。如果转换指针失败,则置0;如果转换引用失败,则抛出bad_cast异常。
1 if(Extend *ptr = dynamic_cast...
分类:
其他好文 时间:
2014-07-22 23:17:36
阅读次数:
383
在许多情况下,在基类中不能对虚函数给出有意义的实现,而把它声明为纯虚函数,它的实现留给该基类的派生类去做。这就是纯虚函数的作用。
分类:
其他好文 时间:
2014-04-29 20:30:37
阅读次数:
441
Java的多态性面向对象编程有三个特征,即封装、继承和多态。
封装隐藏了类的内部实现机制,从而可以在不影响使用者的前提下改变类的内部结构,同时保护了数据。 继承是为了重用父类代码,同时为实现多态性作准备。那么什么是多态呢?
多态有3个条件1:继承2:重写(重写父类继承的方法)3:父类引...
分类:
编程语言 时间:
2014-04-29 18:29:32
阅读次数:
529
构造函数不能是虚函数。但有时候确实需要能传递一个指向基类对象的指针,并且有已创建的派生类对象的拷贝。通常在类内部创建一个Clone()方法,并设置为虚函数。//Listing
12.11 Virtual copy constructor#include using namespace std;cla...
分类:
编程语言 时间:
2014-04-29 17:26:52
阅读次数:
522
问 1 class B 2 { 3 public: 4 virtual void fun()
5 { 6 printf("fun in B\n"); 7 } 8 void b1() 9 {10 printf("b1 in B\n...
分类:
其他好文 时间:
2014-04-29 17:22:46
阅读次数:
424
摘自C++编程思想:------------------------------
继承与组合:接口的重用
-------------------------------继承和组合都允许由已存在的类型创建新类型,两者都是在新类型中嵌入已存在的类型的子对象。然而,当我们想重用原类型作为新类型的内部实现的...
分类:
其他好文 时间:
2014-04-28 14:59:41
阅读次数:
471
//: WIND2.CPP -- Inheritance &
upcasting#include enum note { middleC, Csharp, Cflat }; // Etc.class instrument
{public: void play(note) const { // ...
分类:
其他好文 时间:
2014-04-28 01:35:42
阅读次数:
1272
#include class base {public: virtual void v() const
= 0; virtual void f() const = 0 { // 纯虚函数也有实现内容,但子类仍然必须实现这个虚函数 cout <<
"base::f()\n"; }};voi...
分类:
其他好文 时间:
2014-04-27 23:47:48
阅读次数:
561
在public继承中,(public 继承表示的关系是 “is a ” 的关系),其类中定义的函数主要有三类:pure virtual函数,impure virtual函数以及non-virtual函数,这三种函数决定了public继承中的两个重要概念 : “ 函数接口继承” 以及 “函数实现继承”。那么接下来将针对这样一个不简单的问题做一些简介。
考虑如下的类定义:
class Shape...
分类:
其他好文 时间:
2014-04-27 18:29:13
阅读次数:
526
本文来自之后。
两个大前提:理解人性和尊重秩序
首先,不同年龄段、知识背景、职业经历的人,大概都参差多态,有异有同。用心发现他们脆弱的一面、柔软的一面、阳光的一面,甚或黑暗的一面。 其次, 一旦成为「公司人」,无论处于什么大环境,多数人恐怕最希望有一个良好的「秩序」存在,来保障很多东西,去促进很多东西…… 前者是承认人之间的天性和后天差异,后者是对「规矩」的笃信。
在大前提的基础上,日积...
分类:
其他好文 时间:
2014-04-27 17:52:28
阅读次数:
687