多态 与 虚函数
来源:互联网 发布:淘宝产品模板详情代码 编辑:程序博客网 时间:2024/06/08 08:22
虚函数
运用虚函数时,使用基类型的指针, 它指向哪个派生类的对象, 就可以通过它访问那个派生类对象的与基类虚成员函数同名的函数。
virtual 字眼只在声明时出现,不在函数实现的时候出现。
像在下面的程序中并没有给出派生类虚函数的声明, 但系统会根据以下规则来进行判断:
①该函数是否与基类虚函数有相同名称
②该函数是否与基类的虚函数有相同的参数个数及相同的对应参数类型
③该函数是否与基类的虚函数有相同的返回值或者满足赋值兼容规则的指针、引用型的返回值
若满足以上三个规则,就会自动确定为虚函数。
这时,派生类的虚函数覆盖基类的虚函数。派生类的虚函数还会隐藏基类中同名函数的所有其他重载形式。
用指向派生类对象的指针仍然可以调用基类中被派生类覆盖的成员函数,方法是使用::限定。如p->base::display();
6-1 多态性与虚函数
Time Limit: 1000MS Memory Limit: 65536KB
Submit Statistic
Problem Description
通过本题目的练习可以掌握多态性的概念和虚函数的定义和使用方法
要求定义一个基类Pet,它有一个成员函数Speak()用于输出pet的叫声。;派生类Dog和Cat从基类Pet派生而来。他们从基类继承并重新改写了speak()函数,分别用于输出Dog类和Cat类的叫声。要求利用虚函数编写代码,使得程序能够输出下面的内容。
Input
无
Output
输出数据共有3行,本题目要求输出内容必须与示例中的相同。
Example Input
Example Output
How does a pet speak ?
miao!miao!
wang!wang!
Hint
Author
黄晶晶
#include<iostream>using namespace std;class Pet{public: virtual void speak() { cout<<"How does a pet speak ?"<<endl; }};class Dog: public Pet{public: void speak() { cout<<"wang!wang!"<<endl; }};class Cat: public Pet{public: void speak() { cout<<"miao!miao!"<<endl; }};int main(){ Pet pet; Dog dog; Cat cat; Pet *p; //定义基类型的指针 p = &pet; //指向派生类 p->speak(); p = &cat; p->speak(); p = &dog; p->speak(); return 0;}
阅读全文
0 0
- 多态 与 虚函数
- 多态、虚函数与虚析构函数
- 虚函数与重载函数
- 虚函数与函数指针
- 虚函数与虚析构函数
- 虚函数与虚析构函数
- 内联函数与虚函数
- 【C++多态】与虚函数简单总结
- 虚函数与const
- 虚函数与VTABLE
- 继承与虚函数
- 多态性与虚函数
- 虚函数与private
- 多态性与虚函数
- 继承与虚函数
- 多态性与虚函数
- 继承与虚函数
- 多态性与虚函数
- Tomacat9.0 报错 [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'so
- 一元三次方程求解
- web前端性能优化总结
- canvas保存页面为图片传入服务器的小问题
- 141. Linked List Cycle
- 多态 与 虚函数
- 无限极折叠分类
- 什么是React?
- redis-5大对象之---存储基础结构
- 邮件安全的攻守之道
- Python笔记之psutil模块(自动化运维利器psutil玩转系统监控及管理)
- 20171215Link
- recyclerview 利用Timer实现自动滚动
- 使用System.arraycopy()实现数组之间的复制