关于继承的多态
2015-05-14 17:53
211 查看
#include<iostream>
using namespace std;
class Animal { public: Animal(){}
Animal(int weight, int height){}
void eat(){ cout << "animal eat" << endl; }
void sleep(){ cout << "animal sleep" << endl; }
virtual void breath(){ cout << "animal breath" << endl; }
~Animal(){}; };
class Fish:public Animal { public: Fish() :Animal(40, 40){}
void breath() { cout << "Fish bubble" << endl; }
~Fish(){}; };
int main(){
/*Animal *An;
Fish fh;
An = &fh;//将Fish类的地址赋给An之后,但An->breath()调用的确是父类的breath*/
Animal *An=new Fish(); 此处将引起多态
if (An != NULL){ delete An; return 0; }
//An->breath();
//fh.breath();
system("pause"); }
允许将子类类型的指针赋值给父类类型的指针。
子类的指针赋给父类时,若基类中的同名函数未能声明为虚函数,若仍用父类的指针指向同名函数,编译器会调用父类中的函数,此时会引起多态。
using namespace std;
class Animal { public: Animal(){}
Animal(int weight, int height){}
void eat(){ cout << "animal eat" << endl; }
void sleep(){ cout << "animal sleep" << endl; }
virtual void breath(){ cout << "animal breath" << endl; }
~Animal(){}; };
class Fish:public Animal { public: Fish() :Animal(40, 40){}
void breath() { cout << "Fish bubble" << endl; }
~Fish(){}; };
int main(){
/*Animal *An;
Fish fh;
An = &fh;//将Fish类的地址赋给An之后,但An->breath()调用的确是父类的breath*/
Animal *An=new Fish(); 此处将引起多态
if (An != NULL){ delete An; return 0; }
//An->breath();
//fh.breath();
system("pause"); }
允许将子类类型的指针赋值给父类类型的指针。
子类的指针赋给父类时,若基类中的同名函数未能声明为虚函数,若仍用父类的指针指向同名函数,编译器会调用父类中的函数,此时会引起多态。
相关文章推荐
- 关于继承的方法多态
- 关于继承、封装、多态、抽象和接口
- 关于java接口与多态、继承的思考
- 关于Java类、对象、继承及多态的编程实验
- 关于继承中子类和父类中构造函数和析构函数运行的顺序,和继承的多态
- 关于C++中私有继承后虚函数的访问权限与私有继承后多态的问题
- 黑马程序员关于面象对象以及它的三大特性:封装 继承 多态
- 关于Java中的封装、多态、继承(1)
- 关于C语言中继承和多态的实现
- 学习C#的一些笔记(关于继承与多态,static关键字)
- 关于继承和多态的小程序
- 关于JAVA继承、多态、抽象类、接口等性质的学习(2)
- 关于面向对象的三个基本特征 封装、继承、多态 ’
- c#笔记整理 关于继承与多态等
- 关于java继承与多态的深入理解
- Python中关于封装,继承,多态的表述
- 一个关于继承和多态的问题(提问篇)
- DELPHI中关于类的继承和多态问题
- 我的第一次博客文章,关于看完慕课Java视频三特性:封装、多态、继承
- 关于封装,继承,多态三个概念的简单理解