C++多态特性例

#include<iostream>
#include<string>
using namespace std;

class fruit
{
public:
		virtual void how_to_eat()const=0;
		virtual void show_priority()const=0;
        fruit(string a,string b,double c);
		string name;
		string color;
		double price;
};

class apple:public fruit
{
public:
		apple();
		void how_to_eat()const;
		void show_priority()const;
};

class bnana:public fruit
{
public:
		bnana();
		void show_priority()const;
		void how_to_eat()const;
};

fruit::fruit(string a,string b,double c):name(a),color(b),price(c){}
apple::apple():fruit("apple","red",1.23){}
bnana::bnana():fruit("bnana","yellow",0.34){}

void apple::how_to_eat()const
{
	cout<<"直接吃"<<endl;
}
void apple::show_priority()const
{
	cout<<name<<endl<<color<<endl<<price<<endl;
}

void bnana::how_to_eat()const
{
	cout<<"去了皮再吃"<<endl;
}
void bnana::show_priority()const
{
	cout<<name<<endl<<color<<endl<<price<<endl;
}

int main()
{
	fruit *p[2]={NULL};
	p[0]=new apple;
	p[1]=new bnana;
	for(int i=0;i<2;i++)
	{
		p[i]->show_priority();p[i]->how_to_eat();
	}
	return 0;
}

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索string
, const
, double
, public
, apple
void
c 多态实例、多态特性、多态的特性、java 多态经典例子、java多态实例,以便于您获取更多的相关知识。

时间: 2024-09-21 21:39:01

C++多态特性例的相关文章

虚函数与多态小览

一.文章来由 Bill又写文章来由了哇~~早就想好好搞清这个问题了,这是c++领域里面比较难搞定的一块知识点,而且最近在看设计模式,里面有涉及这块,之前学过的不用容易玩忘记,于是就干脆研究透一点,也好碰到.用到的时候不心慌~于是有了这篇文章. 二.从编译时和运行时说起 2.1 编译时: 顾名思义就是正在编译的时候.就是编译器帮你把源代码翻译成机器能识别的代码.(当然只是一般意义上这么说,实际上可能只是翻译成某个中间状态的语言.比如Java只有JVM识别的字节码,C#中只有CLR能识别的MSIL)

Objective-C 继承和多态

学习Java我们知道类有三大特征,封装,继承,多态.而在Objective-C中也有继承的概念,今天就来看看Objective-C中的继承和多态. 首先,我们来看看示例代码: //Animal.h #import <Foundation/Foundation.h> @interface Animal : NSObject { int food_consumption; //食量 int count; //数量 int parturition_days; //生产周期 } -(int)count

后台开发:核心技术与应用实践2.3 类的多态

2.3 类的多态 1.?多态 多态,顾名思义,是一个事物有多种形态的意思.在C++程序设计中,多态性是指具有不同功能的函数可以用同一个函数名,这样就可以用一个函数名调用不同内容的函数.在面向对象方法中一般是这样表述多态性的:向不同的对象发送同一个消息,不同的对象在接收时会产生不同的行为(即方法):也就是说,每个对象可以用自己的方式去响应共同的消息.所谓消息,就是调用函数,不同的行为就是指不同的实现,即执行不同的函数. [例2.28] 基类和派生类成员函数同名覆盖时的执行选择. #include<

C++中类的多态与虚函数的使用

类的多态特性是支持面向对象的语言最主要的特性,有过非面向对象语言开发经历的人,通常对这一章节的内容会觉得不习惯,因为很多人错误的认为,支持类的封装的语言就是支持面向对象的,其实不然,Visual BASIC 6.0 是典型的非面向对象的开发语言,但是它的确是支持类,支持类并不能说明就是支持面向对象,能够解决多态问题的语言,才是真正支持面向对象的开发的语言,所以务必提醒有过其它非面向对象语言基础的读者注意! 多态的这个概念稍微有点模糊,如果想在一开始就想用清晰用语言描述它,让读者能够明白,似乎不太

重新认识ruby的多态和duck type

多态在java中是如何定义的? 我这样理解: 多态需要借助接口来实现,就是所有实现了该特定的接口的类用起来都象他. 什么是duck type? 在Programming Ruby中这样定义:如果对象能够象鸭子那样行走,象鸭子那样呱呱叫,那么解释器会很高兴的把它当做鸭子来对待的.(Programming Ruby 中文版 P367) 一天我问我一个同事,到底ruby中有没有多态? 得到一个有趣的答复:弱类型的动态语言,没有抽象类,没有接口,你说有没有多态? 多态很有用,多态是不是只有静态面向对象语

c++编译器对多态的实现原理总结

问题:定义一个空的类型,里面没有任何的成员变量或者成员函数,对这个类型进行 sizeof 运算,结果是? 结果是1,因为空类型的实例不包含任何信息,按道理 sizeof 计算之后结果是0,但是在声明任何类型的实例的时候,必须在内存占有一定的空间,否则无法使用这些实例,至于占据多少内存大小,由编译器决定. 继续问:如果在这个类型里添加一个构造函数和析构函数,那么结果又是多少? 还是1,因为我们调用构造函数和析构函数,只需要知道函数的地址即可,而这些函数的地址只和类型相关,和类型的实例无关,编译器不

Java 多态透析 详细理解

1:什么是多态        一个对象的多种状态        (老师)(员工)(儿子)        教师 a =老钟;        员工 b =老钟; 2:多态体现 父类引用变量指向了子类的对象          Father f = new Son();       父类引用也可以接受自己的子类对象      1:Father类            1:非静态成员变量x            2:静态成员变量y            3:非静态方法eat,方法体输出父类信息      

javascript 面向对象编程基础 多态_js面向对象

Javascript已经可以模拟出面向对象的封装和继承特性,但是不幸的是Javascript对多态特性的支持非常弱!其它面向对象语言的多态一般都由方法重载和虚方法来实现多态,Javascript也通过这两种途径来实现! 重载:由于Javascript是弱类型的语言,而且又支持可变参数,当我们定义重载方法的时候,解释器无法通过参数类型和参数个数来区分不同的重载方法,因此方法重载是不被支持的!当先后定义了同名的方法的时候,后定义的方法会覆盖先定义的方法! 既然解释器无法分辨重载方法,那就手动区分不同

C#基础全接触

引用类型是类型安全的指针,它们的内存是分配在堆(保存指针地址)上的.String.数组.类.接口和委托都是引用类型.强制类型转换与as类型转换的区别:当类型转换非法时,强制类型转换将抛出一个System.InvalidCastException异常,而as不会抛出异常,它返回一个null值.用using创建别名:using console = System.Console;访问限定符:public  该成员可以被其他任何类访问protected 该成员只能被其派生类访问private  该成员只