c++ 虚函数以及抽象类
来源:互联网 发布:阿里外包员工出路 知乎 编辑:程序博客网 时间:2024/06/05 23:44
虚函数:
引入目的:
多态性,动态绑定,c++的多态性通过虚函数来实现的。
抽象类:
引入目的:
1、方便使用多态特性,需要在基类中定义虚函数。
2、有些情况下,不允许基类本身生成对象,e.g. 动物可以派生出狗、猫等子类,这些子类可以生成相应对象,但是动物本身不应生成对象,明显不合理。
c++ 中抽象类的实现是通过定义纯虚函数来实现的,在类中定义了纯虚函数的类被称为抽象类,该类不可以被实例化。
定义纯虚函数:
virtual returnType functionName(parameter list)=0
纯虚函数必须在基类中声明,在基类中未被定义,要求派生类都要定义自己的实现方法。
虚函数:
该函数在基类中被声明为virtual,但是可以有基类进行定义,派生类中可以重新定义,可以实现动态重载。
e.g.抽象类代码:
#include <iostream>using namespace std;class A{private:int data;public :A():data(0){}virtual int a()=0; //纯虚函数,A为抽象类virtual int getData(){return data;}void setData(int a){data=a;}};class B:public A{int d;public:B():d(1){}int a(){return d+1;}int getData(){return d;}};int main(){//A a; 抽象类不可被实例化//cout<<a.getData()<<endl;B b;cout<<b.getData()<<endl;cout<<b.a()<<endl;return 0;}
#include <iostream>using namespace std;class A{private:int data;public :A():data(0){}//virtual int a()=0;virtual int getData(){return data;}void setData(int a){data=a;}};class B:public A{int d;public:B():d(1){}int a(){return d+1;}int getData(){return d;}};int main(){A a;cout<<a.getData()<<endl;B b;cout<<b.getData()<<endl;cout<<b.a()<<endl;return 0;}
- c++ 虚函数以及抽象类
- C++:虚函数与抽象类 zz
- 【c++】纯虚函数和抽象类
- C++:纯虚函数与抽象类
- C++_虚函数和抽象类
- [C++]纯虚函数和抽象类
- Java?C++?虚函数?抽象?
- C++-虚函数,多态性,纯虚函数,抽象类
- 虚函数、抽象函数、抽象类、接口
- 虚函数、抽象函数、抽象类、接口
- 虚函数,抽象类,抽象函数,接口
- 虚函数、抽象函数、抽象类、接口
- 类的继承、抽象类、虚函数[C++]
- C++:抽象基类和纯虚函数的理解
- C++:抽象基类和纯虚函数的理解
- C++(笔记)纯虚函数(抽象类)
- C++:抽象基类和纯虚函数的理解
- c++------------之---【虚函数和抽象基类的应用】
- IOS设计模式之二(门面模式,装饰器模式)
- linux内核源码阅读之facebook硬盘加速flashcache之五
- dialog,activity 屏蔽Home键详解
- AVPlayer vs. AVAudioPlayer
- ssh整合An AnnotationConfiguration instance is required to use <mapping class="“错误解决方法
- c++ 虚函数以及抽象类
-
- 运用BCP导出数据库大批量数据以及导入大批量数据到数据库
- python字符转换(ascii码转换)
- 《程序员》 -- 视觉与交互设计——从iOS 7谈起
- Sprite Kit的简单使用Demo
- go语言将函数作为参数传递
- dp-史上最戳最长最臭代码-hdu-4733-G(x)
- JavaMail发送HTML邮件 no object DCH for MIME type multipart/mixed;异常