修练8年C++面向对象程序设计之体会
2016-01-15 18:31
531 查看
修练8年C++面向对象程序设计之体会
2005-04-29 09:58 出处: 作者:林锐 责任编辑:xietaoming在本页浏览全文
1.3 虚函数与多态 除了继承外,C++的另一个优良特性是支持多态,即允许将派生类的对象当作基类的对象使用。如果A 是基类,B 和C 是A 的派生类,多态函数Test 的参数是A 的 指针。那么Test 函数可以引用A、B、C 的对象。示例程序如下: class A { public: void Func1(void); }; void Test(A *a) { a->Func1(); } class B : public A { … }; class C : public A { … }; // Example main() { A a; B b; C c; Test(&a); Test(&b); Test(&c); }; 以上程序看不出“多态”有什么价值,加上虚函数和抽象基类后,“多态”的威力就显示出来了。 C++用关键字virtual 来声明一个函数为虚函数,派生类的虚函数将(override)基类对应的虚函数的功能。示例程序如下: class A { public: virtual void Func1(void){ cout<< “This is A::Func1 \n”} }; void Test(A *a) { a->Func1(); } class B : public A { public: virtual void Func1(void){ cout<< “This is B::Func1 \n”} }; class C : public A { public: virtual void Func1(void){ cout<< “This is C::Func1 \n”} }; // Example main() { A a; B b; C c; Test(&a); // 输出This is A::Func1 Test(&b); // 输出This is B::Func1 Test(&c); // 输出This is C::Func1 }; 如果基类A 定义如下: class A { public: virtual void Func1(void)=0; }; 那么函数Func1 叫作纯虚函数,含有纯虚函数的类叫作抽象基类。抽象基类只管定义纯虚函数的形式,具体的功能由派生类实现。 结合“抽象基类”和“多态”有如下突出优点: (1)应用程序不必为每一个派生类编写功能调用,只需要对抽象基类进行处理即可。这一 招叫“以不变应万变”,可以大大提高程序的可复用性(这是接口设计的复用,而不是代码实现的复用)。 (2)派生类的功能可以被基类指针引用,这叫向后兼容,可以提高程序的可扩充性和可维护性。以前写的程序可以被将来写的程序调用不足为奇,但是将来写的程序可以被以前写的程序调用那可了不起。 |
相关文章推荐
- 修练8年C++面向对象程序设计之体会
- C++历史段错误
- C语言中有string吗?
- C++语言学习资料大全分享 想要的速度下
- Effective C++(条款39-40)
- C++ vector的使用
- C++ Primer 5th Chapter 9 学习笔记
- C++中运算符重载
- c语言 数组名是常量指针
- MFC中ActiveX控件的使用
- C\C++ 使用do{...}while(0)进行宏定义的好处!!!
- 线程池的实现(c语言)
- 详解C++编程中标记语句与复合语句的写法
- 杨辉三角 C语言
- 魔方阵的实现 C语言
- C++ Primer 5th Chapter 8 学习笔记
- C++运行时获取类型信息的type_info类与bad_typeid异常
- C语言中的常用变量
- C++中关于拷贝构造函数
- Go与C语言的互操作 cgo