c/c++中的函数覆盖,虚函数,纯虚函数对比是什么样的
发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,c/c++中的函数覆盖,虚函数,纯虚函数对比是什么样的,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。1.函数覆盖ClassA , C
千家信息网最后更新 2026年11月02日c/c++中的函数覆盖,虚函数,纯虚函数对比是什么样的
c/c++中的函数覆盖,虚函数,纯虚函数对比是什么样的,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
1.函数覆盖
ClassA , ClassB ,其中ClassB继承ClassA
类定义如下:
#ifndef _CLASSA_H#define _CLASSA_H#includeusing namespace std;class ClassA{ public: ClassA(void); ~ClassA(void); void method();};#endif
#include "stdafx.h"#include "ClassA.h"ClassA::ClassA(void){}ClassA::~ClassA(void){}void ClassA::method(void){ cout<<"I am from class ClassA: methodA"<#ifndef _CLASS_B#define _CLASS_B#include "ClassA.h"class ClassB:public ClassA{public: ClassB(void); ~ClassB(void); void method();};#endif#include "stdafx.h"#include "ClassB.h"ClassB::ClassB(void){}ClassB::~ClassB(void){}void ClassB::method(){ cout<<"I am from class ClassB: methodA"<2.虚函数覆盖
VirtualClassA , VirtualClassB ,其中VirtualClassB继承VirtualClassA
类定义如下:
#ifndef _VIRTUAL_CLASS_A#define _VIRTUAL_CLASS_A#include using namespace std;class VirtualClassA{public: VirtualClassA(void); ~VirtualClassA(void); virtual void method();};#endif
#include "stdafx.h"#include "VirtualClassA.h"VirtualClassA::VirtualClassA(void){}VirtualClassA::~VirtualClassA(void){}void VirtualClassA::method(){ cout<<"I am from class VirtualClassA: method"<#ifndef _VIRTUAL_CLASS_B#define _VIRTUAL_CLASS_B#include "VirtualClassA.h"class VirtualClassB:public VirtualClassA{public: VirtualClassB(void); ~VirtualClassB(void); virtual void method( );};#endif#include "stdafx.h"#include "VirtualClassB.h"VirtualClassB::VirtualClassB(void){}VirtualClassB::~VirtualClassB(void){}void VirtualClassB::method(){ cout<<"I am from class VirtualClassB: method"<3.纯虚函数覆盖
PureVirtualClassA , PureVirtualClassB ,其中PureVirtualClassB继承PureVirtualClassA
类定义如下:
#ifndef _PURE_VIRTUAL_CLASS_A#define _PURE_VIRTUAL_CLASS_A#include using namespace std;class PureVirtualClassA{public: PureVirtualClassA(void); ~PureVirtualClassA(void); virtual void method() =0; /* 通常,不实现抽象基类的纯虚函数; 当然,也可以给纯虚函数提供实现; */};#endif
#include "stdafx.h"#include "PureVirtualClassA.h"PureVirtualClassA::PureVirtualClassA(void){}PureVirtualClassA::~PureVirtualClassA(void){}#ifndef _PURE_VIRTUAL_CLASS_B#define _PURE_VIRTUAL_CLASS_B#include "purevirtualclassa.h"class PureVirtualClassB :public PureVirtualClassA{public: PureVirtualClassB(void); ~PureVirtualClassB(void); virtual void method();};#endif#include "stdafx.h"#include "PureVirtualClassB.h"PureVirtualClassB::PureVirtualClassB(void){}PureVirtualClassB::~PureVirtualClassB(void){}void PureVirtualClassB::method(void){ cout<<"I am from class PureVirtualClassB: method"<测试代码如下:
// virtualMethodTest.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include "ClassA.h"#include "ClassB.h"#include "VirtualClassA.h"#include "VirtualClassB.h"#include "PureVirtualClassA.h"#include "PureVirtualClassB.h"#include using namespace std;int _tmain(int argc, _TCHAR* argv[]){ cout<<"--------覆盖---------"<method(); delete(pClassA); ClassB *pClassB=new ClassB(); pClassB->method(); // pClassB->ClassA::method();--可以隐式调用父类的方法 // (*pClassB).ClassA::method(); delete(pClassB); ClassA *pClassB2=new ClassB(); pClassB2->method(); delete(pClassB2); cout<<"-------多态----------"<method(); delete(pVirtualClassA); VirtualClassB *pVirtualClassB=new VirtualClassB(); pVirtualClassB->method(); delete(pVirtualClassB); VirtualClassA *pVirtualClassB2=new VirtualClassB(); pVirtualClassB2->method(); delete(pVirtualClassB2); cout<<"-------纯虚函数----------"<method(); //delete(pPureVirtualClassA); PureVirtualClassB *pPureVirtualClassB=new PureVirtualClassB(); pPureVirtualClassB->method(); delete(pPureVirtualClassB); PureVirtualClassA *pPureVirtualClassB2=new PureVirtualClassB(); pPureVirtualClassB2->method(); delete(pPureVirtualClassB2); return 0;}
打印结果如下:
函数覆盖不能实现多态;
虚函数和纯虚函数可以实现多态;
含有纯虚函数的类不能实例化。
关于c/c++中的函数覆盖,虚函数,纯虚函数对比是什么样的问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注行业资讯频道了解更多相关知识。
函数
多态
问题
方法
更多
帮助
解答
易行
简单易行
代码
入口
内容
实例
小伙
小伙伴
应用程序
控制台
知识
程序
篇文章
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
互联网佳科技有限公司
互联网科技战争
易互联网科技有限公司
善班互联网科技
百单互联网科技有限公司
科技创新互联网企业
互联网金融 科技创新
互联网科技宣传片
中国互联网金融科技基金
滨湖区互联网智能科技产品供应
蓝色互联网科技
安控科技rtu产品工业互联网
博兴的互联网电子科技公司
互联网科技有哪些公司
成都铂石互联网科技做什么的
互联网科技公司实习生
互联网第三次科技革命特征
深圳无忧互联网科技
四川互联网展示科技馆设计
万物互联网智能科技
卓越科技(互联网 )
华中科技大学互联网
西安互联网科技公司
新浪科技互联网
互联网金融和金融科技
天津腾达互联网科技有限公司
畅思互联网科技
深圳市罗太互联网科技有限公司
上海乐五互联网科技有限公司
瑞安市蟠桃会互联网科技有限公司