更多课程 选择中心

C/C++培训
达内IT学院

400-996-5531

C++中的多态定义和作用是什么?

  • 发布:C++培训
  • 来源:C++资讯
  • 时间:2020-03-09 16:27

多态是在不同继承关系的类对象,去调同一函数,产生了不同的行为。就是说,有一对继承关系的两个类,这两个类里面都有一个函数且名字、参数、返回值均相同,然后我们通过调用函数来实现不同类对象完成不同的事件。

构成多态还有两个条件:

①调用函数的对象必须是指针或者引用。

②被调用的函数必须是虚函数,且完成了虚函数的重写。

说了C++中多态的定义下面用一句代码来了解一下多态的作用:

#include<iostream>

using namespace std;

class Shape

{

private:

int n;

public:

Shape():n(5){}

~Shape(){}

virtual void Draw() { cout << "画一个图形" << endl; }

virtual void Area() { cout << "计算图形面积" << endl; }

virtual void Erase() { cout << "将图形清除" << endl; }

void Size() { Area(); }

};

class Cube:public Shape

{

private:

int e;

public:

Cube() :e(2) {}

~Cube() {}

virtual void Draw() { cout << "画一个立方体" << endl; }

virtual void Area() { cout << "计算立方体面积" << endl; }

virtual void Erase() { cout << "清除立方体" << endl; }

};

void Update(Shape &S)

{

S.Draw();

}

int main(void)

{

Shape *pS;

Cube C;

pS = &C;

cout << "执行Update函数後:";

Update(C);//引用方式调用

cout << "执行Size函数後:";

pS->Size();//间接调用

cout << "执行Erase函数後:";

pS->Erase();//指针调用

system("pause");

return 0;

}

输出:

执行Update函数後:画一个立方体

执行Size函数後:计算立方体面积

执行Erase函数後:清除立方体

得到结果之后,给大家几句话:

多态时,父类先于子类构造,晚于子类析构。

父类通过虚函数才能调用子类函数。

子类析构函数结束时会调用父类的析构函数,这是编译器为你自动实现的。

如果想要被人继承,即类中有虚函数,那析构就应该是虚的;若析构非虚,就不应该继承这个类。不然子类析构无法被父类指针调用而导致内存泄漏。

免责声明:整理文章为传播相关技术,版权归原作者所有,如有侵权,请联系删除

预约申请免费试听课

填写下面表单即可预约申请免费试听!怕钱不够?可就业挣钱后再付学费! 怕学不会?助教全程陪读,随时解惑!担心就业?一地学习,可全国推荐就业!

上一篇:这才是你需要的C语言、C++学习路线!
下一篇:C++中构造函数有几种?

C语言宏定义的几种使用方法

C与C++内存管理避坑指南

C/C++代码规范注释有哪些讲究?

C语言中,全局变量滥用的后果竟如此严重?

Copyright © 2023 Tedu.cn All Rights Reserved 京ICP备08000853号-56 京公网安备 11010802029508号 达内时代科技集团有限公司 版权所有

选择城市和中心
黑龙江省

吉林省

河北省

湖南省

贵州省

云南省

广西省

海南省