抽象类中定义纯虚函数

首先看一段代码:

class Instrument
{
public:
virtual	void play()const=0//非法的定义在抽象类中定义纯虚函数
	{
		cout<<"Instrument Play\n";
	}
};

class Wind:public Instrument
{
	void play( )const
	{
		cout<<"Wind Play\n";
	}
};

void main()
{
	Wind s;
	Instrument &p = s;
	p.play();
}

以下是纯虚函数在抽象类中的定义:

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

class Instrument
{
public:
	virtual void play()const =0;//纯虚函数    这个抽象类的虚函数指针是空的
                              //不可以内联实现纯虚函数,但是可以在类外部实现
};
//在基类作为抽象类的视乎为其的纯虚函数提供定义是可以的,这样可以使一些公共代码可以在一些或者所有的派生类中都能调用
void Instrument::play()const
{
	cout<<"Instrument play()\n";
}
/*以下方式也可以
inline void Instrument::play()const
{
	cout<<"Instrument play()\n";
}*/

class Wind:public Instrument
{
	void play()const
	{
		Instrument::play();
		cout<<"Wind Play()\n";
	}
};

void main()
{
	Wind s;
	Instrument &p = s;
	p.play();
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-11-06 20:58:12

抽象类中定义纯虚函数的相关文章

C++中的纯虚函数和虚函数的作用

1. 虚函数和纯虚函数可以定义在同一个类(class)中,含有纯虚函数的类被称为抽象类(abstract class),而只含有虚函数的类(class)不能被称为抽象类(abstract class). 2. 虚函数可以被直接使用,也可以被子类(sub class)重载以后以多态的形式调用,而纯虚函数必须在子类(sub class)中实现该函数才可以使用,因为纯虚函数在基类(base class)只有声明而没有定义. 3. 虚函数和纯虚函数都可以在子类(sub class)中被重载,以多态的形式

第十三周项目二 形状类族的中的纯虚函数

[项目2-形状类族的中的纯虚函数] 写一个程序,定义抽象基类Shape,由它派生出3个派生类,Circle(圆形).Rectangle(矩形).Triangle(三角形).用如下的main()函数,求出定义的几个几何体的面积和. [cpp] view plaincopyprint? int main() { Circle c1(12.6),c2(4.9);//建立Circle类对象c1,c2,参数为圆半径 Rectangle r1(4.5,8.4),r2(5.0,2.5);//建立Rectang

第十三周项目二:形状类族的中的纯虚函数

问题及代码: /* *Copyright (c)2015,烟台大学计算机与控制工程学院 *All rights reserved. *文件名称: 形状类族的中的纯虚函数 .cpp *作 者:白云飞 *完成日期:2015年5月29日 *版 本 号:v1.0 * *问题描述:定义抽象基类Shape,由它派生出3个派生类,Circle(圆形).Rectangle(矩形).Triangle(三角形).用如下的main()函数,求出定义的几个几何体的面积和. *程序输入:圆的半径,矩形的长和宽,三角形的底

第十三周(-形状类族的中的纯虚函数)

/* *copyright(c) 2015,烟台大学计算机学院 *All rights reserved. *文件名:第十三周(-形状类族的中的纯虚函数) *作者:王忠 *完毕日期:2015.6.02 *版本:v1.0 * *问题描写叙述:写一个程序,定义抽象基类Shape,由它派生出3个派生类,Circle(圆形).Rectangle(矩形).Triangle(三角形).用例如以下的main()函数,求出定义的几个几何体的面积和. *输入描写叙述: *程序输出: #include <iostr

??项目2-形状类族中的纯虚函数

项目2-形状类族的中的纯虚函数 写一个程序,定义抽象基类Shape,由它派生出3个派生类,Circle(圆形).Rectangle(矩形).Triangle(三角形).用如下的main()函数,求出定义的几个几何体的面积和. int main() { Circle c1(12.6),c2(4.9);//建立Circle类对象c1,c2,参数为圆半径 Rectangle r1(4.5,8.4),r2(5.0,2.5);//建立Rectangle类对象r1,r2,参数为矩形长.宽 Triangle

14周 项目2 形状类族中的纯虚函数

#include <iostream> using namespace std; class Shape { public: virtual double area()=0; }; class Circle:public Shape { public: Circle(double r):R(r) {} virtual double area() { return R*R*3.14; } protected: double R; }; class Rectangle:public Shape {

基类中定义的虚函数在派生类中重新定义时,其函数原型,包括返回类型、函数名、参数个数、参数类型及参数的先后顺序,都必须与基类中的原型完全相同 but------&gt; 可以返回派生类对象的引用或指针

您查询的关键词是:c++primer习题15.25 以下是该网页在北京时间 2016年07月15日 02:57:08 的快照: 如果打开速度慢,可以尝试快速版:如果想更新或删除快照,可以投诉快照. 百度和网页 http://bbs.csdn.net/topics/380238133 的作者无关,不对其内容负责.百度快照谨为网络故障时之索引,不代表被搜索网站的即时页面. 首页 精选版块 移动开发 iOS Android Qt WP 云计算 IaaS Pass/SaaS 分布式计算/Hadoop J

形状类族中的纯虚函数

输入代码: /* *Copyright (c)2015,烟台大学计算机与控制工程学院 *All rights reserved. *文件名称:sum123.cpp *作 者:林海云 *完成日期:2015年6月13日 *版 本 号:v2.0 * *问题描述:写一个程序,定义抽象基类Shape,由它派生出3个派生类,Circle(圆形).Rectangle(矩形).Triangle(三角形). 用如下的main()函数,求出定义的几个几何体的面积和. *程序输入:无 *程序输出:总面积 */ #in

第十三周项目二-形状类族中的纯虚函数

写一个程序,定义抽象基类Shape,由它派生出3个派生类,Circle(圆形).Rectangle(矩形).Triangle(三角形).用如下的main()函数,求出定义的几个几何体的面积和. int main() { Circle c1(12.6),c2(4.9);//建立Circle类对象c1,c2,参数为圆半径 Rectangle r1(4.5,8.4),r2(5.0,2.5);//建立Rectangle类对象r1,r2,参数为矩形长.宽 Triangle t1(4.5,8.4),t2(3