初学编程C++之动态多态

代码示例:

#include<iostream>
#include<stdlib.h>
#include"Shape.h"
#include"Circle.h"
#include"Rect.h"
using namespace std;

/**
  动态多态、虚函数
  要求:
     1、定义Shape类: 成员函数:calcArea()、构造函数、析构函数
	 2、定义Rect类:  成员函数:calcArea()、构造函数、析构函数
	                  数据成员:m_dWidth、m_dHeight
	 3、定义Circle类:成员函数:calcArea()、构造函数、析构函数
	                  数据成员:m_dR
	*/

#ifndef SHAPE_H
#define SHAPE_H

#include<iostream>

using namespace std;

class Shape
{
public:
	Shape();
	virtual ~Shape();
	virtual double calcArea();

};

#endif

#include“Shape.h”
Shape::Shape()
{
	cout<<"Shape()"<<endl;
}
Shape::~Shape()
{
	cout<<"~Shape()"<<endl;
}
double Shape::calcArea()
{
	cout<<"Shape-->clacArea()"<<endl;
	return 0;
}

#ifndef RECT_H
#define RECT_H

class Rect:public Shape
{
public:
	Rect(double width,double height);
	~Rect();
	virtual double caleArea();
protected:
	double m_dWidth;
	double m_dHeight;
};
#endif

Rect::Rect(double width,double height)
{
	cout<<"Rect()"<<endl;
	m_dHeight=height;
	m_dWidth=width;

}
Rect::~Rect()
{
	cout<<"~Rect()"<<endl;
}
double Rect::caleArea()
{
	cout<<" Rect-->caleArea()"<<endl;
	return m_dWidth*m_dHeight;
}

#ifndef CIRCLE_H
#define CIRCLE_H

#include"Shape.h"
class Circle:public Shape
{
public:
	Circle(double m_dr);
	~Circle();
	virtual double calcArea();
protected:
	double m_dR;
};
#endif

Circle::Circle(double m_dr)
{
	cout<<"Circle ()"<<endl;
	m_dR=m_dr;
}
Circle::~Circle()
{
	cout<<"~Circle()"<<endl;
}
double Circle::calcArea()
{
	cout<<"Circle-->calcArea()"<<endl;
	return 3.14*m_dR*m_dR;
}

int main(void)
{
	Shape*shape1=new Rect(3,6);
	Shape*shape2=new Circle(5);
	shape1->calcArea();
	shape2->calcArea();
	
	delete shape1;
	shape1=NULL;
	delete shape2;
	shape2=NULL;
	system("pause");
	return 0;
}

打印结果:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
《深入浅出 C++》视频教程详细、系统地介绍了 C++ 开发中方方面面的技术细节,整个课程涵盖知识点非常多,知识模块囊括 名字空间、类与对象、继承与多态、各类友元、异常机制、函数模板、类模板、STL容器操作等等,学完之后将拥有C++开发的非常坚实的功底。 注意:本套视频教程来源于线下的实体班级,因此视频中有少量场景对话和学生问答,对此比较介意的亲们谨慎购买。 本套视频教程不仅会讲清楚概念和相应知识点,而且会抽丝剥茧,讲清楚来龙去脉,站在编程语言设计者的角度讲清楚为什么会出现这样的语法,站得高才能看得远,而不仅仅纠缠于细碎的语法。既有登高望远的视角,又有俯身前行的实践,有别于市面上大多数流于表面的教程。下面是讲解迭代器的一节视频的截图: 每个知识点不仅仅会通过视频讲解清楚,并且会配以精心安排的实验和作业,用来保证学习过程中切实掌握核心技术和概念,通过实验来巩固,通过实验来检验,实验与作业的目的是发现问题,发现技术盲点,通过答疑和沟通夯实技术技能。注意:本套视频教程包含全套11套作业题,覆盖所有视频知识点,循序渐进,各个击破。下面是部分作业题目展示,每道题都有知识点说明,是检验学习效果的一大利器:常见问题:问:零基础可以学习吗?答:这门课程并非针对完全零基础的学员,学习这门课程需要对C语言有了一定了解的。问:遇到问题可以答疑吗?答:可以的,购买课程后可以联系到我,安排进入专门的QQ答疑群。不仅可以向老师提问,也可以跟其他同学讨论,结交兴趣相投的朋友。问:学完能做什么?答:C++是众多开发岗位的必备技能,也是进入面向对象编程领域的一门利器,可以胜任很多岗位的职业要求。尤其是对游戏开发、游戏引擎、算法、界面开发、系统开发等等,C++都是热门技术。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值