类继承
本章内容:
is-a 关系的继承;
如何以公有方式从一个类派生出另一个类;
保护访问;
构造函数成员初始化列表;
向上和向下强制转换;
虚成员函数;
早期(静态)联编与晚期(动态)联编;
抽象基类;
纯虚函数;
何时及如何使用公有继承
面向对象编程的主要目的之一是提供可重用的代码;
C++类提供了更高层次的重用性,类库由类声明和实现构成,因为类组合了数据表示和类方法;
C++提供了比修改代码更好的方法来扩展和修改类——类继承;
13.1 一个简单的基类
从一个类派生出另一个类,原始类成为基类,继承类称为派生类;
程序清单13.1 tabtenn0.h
1 #ifndef TABTENN0_H_ 2 #define TABTENN0_H_ 3 4 class TableTennisPlayer 5 { 6 private: 7 enum {LIM = 20}; 8 char firstname[LIM]; 9 char lastname[LIM]; 10 bool hasTable; 11 public: 12 TableTennisPlayer(const char * fn = "none", const char * ln = "none", bool ht = false); 13 void Name() const; 14 bool HasTable() const { return hasTable; }; 15 void ResetTable(bool v) { hasTable = v; }; 16 }; 17 18 #endif
程序清单 13.2 tabtenn0.cpp
#pragma warning(disable:4996) #include<iostream> #include"tabtenn0.h" #include<cstring> TableTennisPlayer::TableTennisPlayer(const char* fn, const char * ln, bool ht) { std::strncpy(firstname, fn, LIM - 1); firstname[LIM - 1] = '