C++_第11讲-1 虚函数表和虚函数表指针.pdf

  1. 1、本文档共48页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C_第11讲-1虚函数表和虚函数表指针

C++面向对象程序设计 彭刚 为什么使用继承 派生类 派生类的构造函数和解析函数 虚函数 多继承 第11讲 虚函数表和虚函数表指针 0.为什么使用继承 现实世界中许多实体之间并不是孤立的,它们具有共同特 征,也有细微的差别,人们可以使用层次结构来描述它们 之间的相似点和不同点。 引入继承的目的在于为代码重用提供有效手段: 一方面使用继承可以重用先前项目的代码,如果原来的代 码不能完全满足要求,还可以做少量的修改,满足不断变 化的具体应用要求, 另一方面,继承为重用代码而存在的理由已经越来越薄弱 了,而的存在很大程度上是作为“多态”的基础。 9.1 派生类 ——从已有类中派生新的类 B类继承A类,或称从类A派生类B 类A称为基类(父类),类B称为派生类(子类) class 派生类名:访问控制 基类名 { 数据成员和成员函数声明 }; – 访问控制表示派生类对某个基类的继承方式,使用关 键字: public 公有继承 private 私有继承 可缺省声明 protected 保护继承 公有派生 派生类对基类的公有继承使用关键字 public 描述 基类的公有段和保护段成员访问权对派生 类保持不变 私有派生 派生类对基类的私有继承使用关键字 private 描述(可缺 省) 基类的所有公有段和保护段成员都成为派生类的私有成 员,这些私有成员只能被派生类的成员函数访问,而派生 类的使用者无权访问 如果希望基类中某些公有成员在派生类中也是公有的,使 得派生类的使用者能够访问它,则可在派生类的公有段说 明这些成员,并在成员名前缀上“类名::” 保护派生 派生类对基类的保护继承使用关键字 protected 描述 基类的所有公有段和保护段成员都成为派生类的保护成员 保护继承在程序中很少应用 派生类的特性 1. 新的派生类可在基类所提供的基础上包含 新的成员; 2. 在新的派生类中可隐藏基类的任何函数 成员; 3. 可为新的类重载定义函数; 4. 派生类不能访问基类私有成员; 5. 派生类可以访问基类保护成员; #include iostream.h #include string.h class employee{ private: short age; float salary; char *name; public: employee( ) { name=; age=0; salary=0.0; } employee(char *name1, short age1, float salary1) { name=new char[strlen(name1)+1]; strcpy(name,name1); age=age1; salary=salary1; } void print( ) const { coutname:nameendl; coutage:ageendl; coutsalary:salaryendl; } ~employee( ) { if(name!=) delete [] name; } }; Manager: 为避免重复定义,可从employee中派生出manager(派生类)。 派生类继承原有类 中所有的数据成员 和成员函数。 class manager: public employee { }; void main() { manager m; m.print( ); //m.salary=2700.; //error } 派生类 基类 使employee中所有公 有成员在manager中仍 为公有 class manager: public employee { private: int level; public: void print_level(int i=0) { level=i; coutlevel:levelendl; } }; m.print_level(); Manager:除具有employee的属性外,有新的属性。 构造函数 析构函数 print Print_level name age salary level 函数 函数 函数 派生类新增部分 基类定义部分 公有方法 私有成员 派生类构造函数:使用初始化符表初始化基类中的成员。 manager::manager(char *name1, short age1, float salary1, int level1) : employee(name1, age1, salary1) { level=level1; } 缺省构造函数——若基类无缺 省构造函数,将出错 manager::manager( ) { level=0; } manager m(“wang”, 31, 2457.2f, 19); pro

文档评论(0)

l215322 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档