虚函数的作用

C++中虚函数的原理和作用 本文档详细介绍了C++中虚函数的原理以及在何场景下要用到虚函数。 立即下载

     可以让成员函数操作一般化,用基类的指针指向不同的派生类的对象时, 基类指针调用其虚成员函数,则会调用其真正指向对象的成员函数, 而不是基类中定义的成员函数(只要派生类改写了该成员函数)。 若不是虚函数,则不管基类指针指向的哪个派生类对象,调用时都会调用基类中定义的那个函数。

程序1:

#include <iostream>

using namecpace std;

class B0 //基类B0声明
{ 
 

     public:

        void display(){cout<<"B0::display()"<<endl;} //公有成员函数
};


class B1: public B0 
{
     public:
         void display(){cout<<"B1::display()"<<endl;} 
};

class D1: public B1 
{
    public:
        void display(){cout<<"D1::display()"<<endl;} 
};


void fun(B0 *ptr) 
{

    ptr->display(); //"对象指针->成员名"  

}
void main() //主函数
{
    B0 b0; //声明B0类对象
    B1 b1; //声明B1类对象
    D1 d1; //声明D1类对象
    B0 *p; //声明B0类指针
    p=&b0; //B0类指针指向B0类对象
    fun(p);
    p=&b1; //B0类指针指向B1类对象
    fun(p);
    p=&d1; //B0类指针指向D1类对象
    fun(p);
}
运行结果:
B0::display()
B0::display()
B0::display()

程序2:
#include <iostream>
using namespace std;

class B0 //基类B0声明
{

    public: //外部接口
        virtual void display() //虚成员函数
        {

            cout<<"B0::display()"<<endl;

        } 
};


class B1: public B0 //公有派生
{ 

    public:
        void display()  {  cout<<"B1::display()"<<endl;  }
};

class D1: public B1 //公有派生
{ 

    public:
        void display() {  cout<<"D1::display()"<<endl;  }
};


void fun(B0 *ptr) //普通函数
{ 

    ptr->display();    }

void main() //主函数
{ 

    B0 b0,  *p; //声明基类对象和指针
    B1 b1; //声明派生类对象
    D1 d1; //声明派生类对象
    p=&b0;
    fun(p); //调用基类B0函数成员
    p=&b1;
    fun(p); //调用派生类B1函数成员
    p=&d1;
    fun(p); //调用派生类D1函数成员
}
运行结果:
B0::display()
B1::display()
D1::display()

1)虚函数是动态绑定的基础。
2)是非静态的成员函数。
3)在类的声明中,在函数原型之前写virtual。
4)virtual 只用来说明类声明中的原型,不能用在函数实现时。
5)具有继承性,基类中声明了虚函数,派生类中无论是否说明,同原型函数都自动为虚函数。
6)本质:不是重载声明而是覆盖。
7)调用方式:通过基类指针或引用,执行时会 根据指针指向的对象的类,决定调用哪个函数。

数字图像处理第九章笔记 目录一、腐蚀与膨胀1、腐蚀2、膨胀3、对偶性4、开操作与闭操作二、一些基本的形态学算法1、边界提取2、孔洞填充3、连通分量提取4、凸壳5、细化6、粗化7、骨架8、形态学重建三、灰度级形态学1、腐蚀和膨胀2、开运算和闭运算3、灰度级形态学算法 一、腐蚀与膨胀 1、腐蚀 腐蚀可以去除图像的某些部分。 2、膨胀 膨胀可以连接裂缝。 3、对偶性 膨胀和腐蚀彼此关于集合求补运算和反射运算是对偶的 4、开操作与闭操作 开操作:B对A先腐蚀,再进行膨胀 可以平滑物体轮廓,断开较窄的狭颈并消除较细的突出物。 闭操作 阅读详情

相关推荐

NPP/VIIRS夜间灯光数据:从下载到应用的完整指南

本文提供了NPP/VIIRS夜间灯光数据从下载、处理到应用的完整实战指南。详细介绍了如何从官方源获取数据、解读文件结构、进行坐标校正与数据清洗,并深入探讨了其在城市扩张监测、社会经济指标估算、重大事件影响评估等领域的核心应用。文章旨在帮助研究者与从业者快速掌握这一强大的空间数据,将其转化为研究中的实用工具。

gpu4optimizer的博客 866

虚函数的作用及使用方法

转载自:http://c.biancheng.net/cpp/biancheng/view/244.html 我们知道,在同一类中是不能定义两个名字相同、参数个数和类型都相同的函数的,否则就是“重复定义”。但是在类的继承层次结构中,在不同的层次中可以出现名字相同、参数个数和类型都相同而功能不同的函数。 打个比方,假设在Circle类中定义了 area函数,在Circle类的派生类Cylinde...

20164225的博客 1万+

SAP HR模块配置假期日历和缺勤类型

SAP的HR模块。业务顾问在实施时一般会配置未来10年的假期日历,到期后再进行配置。同时,增加请假类型(缺勤信息类型)。记录这一过程。

福来阁86号技师的妖孽日常 5525

虚函数与纯虚函数的定义,作用,区别

(纯)虚函数的区别,作用,定义

xaf21的博客 2208

关于卷积过程中通道数如何变化问题

对卷积操作前后通道数问题进行解释,输出通道数=卷积核的个数。

你好,明天,,的博客 4316

Ubuntu声卡检测与故障排查:从基础命令到驱动修复

本文详细介绍了在Ubuntu系统中进行声卡检测与故障排查的完整流程。从使用lspci、aplay等基础命令识别硬件,到排查驱动冲突、修复权限问题,再到调整PulseAudio高级配置,提供了一套系统性的解决方案。文章结合实战案例,帮助用户快速诊断并解决Ubuntu系统常见的“无声”问题,恢复音频功能。

g2h3i4j5的博客 228

虚函数的作用及应用

1、虚函数的作用 ①、子类重写父类的虚函数后,在子类、父类中调用的虚函数都是子类的虚函数。(有一个特殊情况就是在父类的构造函数中调用的虚函数是父类中的虚函数,因为此时子类还没有构造完成。) ②、子类重写父类的虚函数后,父类指针指向父类对象的话,通过这个父类指针调用的是父类中的虚函数;子类指针指向子类对象的话,通过这个子类指针调用的是子类的虚函数;父类指针指向子类对象的话,通过这个父类...

weixin_30947043的博客 945

实战指南 | IC模拟版图设计从零到精通,手把手带你掌握EDA工具与GDSII输出

本文提供了一份从零开始的IC模拟版图设计实战指南。详细介绍了如何搭建Linux环境、安装Cadence Virtuoso等EDA工具,并深入解析了PDK设计规则。通过手把手绘制CMOS反相器版图的实例,系统讲解了版图绘制、DRC/LVS验证、寄生参数提取、匹配设计以及ESD防护等核心技能,最终指导如何正确生成交付芯片制造厂的标准GDSII文件,帮助读者掌握完整的模拟版图设计流程。

weixin_29214691的博客 391

C++ 虚函数详解

虚函数(virtual function)是C++实现运行时多态(动态多态)的核心机制。下面从多个方面详细讲解虚函数的概念、原理和使用方法。

m0_52951519的博客 709

❤️爆肝十二万字《python从零到精通教程》,从零教你变大佬❤️(建议收藏)

文章目录强烈推荐系列教程,建议学起来!!一.pycharm下载安装二.python下载安装三.pycharm上配置python四.配置镜像源让你下载嗖嗖的快4.1pycharm内部配置4.2手动添加镜像源4.3永久配置镜像源五.插件安装(比如汉化?)5.1自动补码神器第一款5.2汉化pycharm5.3其它插件六.美女背景七.自定义脚本开头八、这个前言一定要看九、python入门十、python缩进十一、Python注释1.单行注释2.多行注释十二、Python 变量1.变量定义理解2. 变量名命名3. 分

全栈川川 26万+

Scale-up,scale-out技术概述

本文系统分析了Scale-up与Scale-out两种扩展技术在现代计算中的应用与发展。Scale-up通过增强单节点性能,适用于高耦合任务,而Scale-out通过横向扩展节点,实现高可用性和无限扩展。在芯片层面,Chiplet技术推动Scale-up发展;在数据中心层面,二者协同工作构建强大集群。光模块在长距离高带宽传输中发挥关键作用。文章对比了NVIDIA、AMD和Broadcom三家公司的技术路线,指出NVIDIA采用封闭生态,AMD选择开放标准,Broadcom则主导底层连接技术。未来发展方向将聚

元直的博客 1446

C++虚函数的作用和实现原理

一、什么是虚函数? 在某基类中声明为 virtual 并在一个或多个派生类中被重新定义的成员函数,用法格式为:virtual 函数返回类型 函数名(参数表) {函数体};实现多态性,通过指向派生类的基类指针或引用,访问派生类中同名覆盖成员函数。 二、虚函数定义 简单地说,那些被virtual关键字修饰的成员函数,就是虚函数。虚函数的作用,用专业术语来解释就是实现多态性(Polymorphism),多态性是将接口与实现进行分离;用形象的语言来解释就是实现以共同的方法,但因个体差异,而采用不同的策略。下面来看一

weixin_44493195的博客 1万+

【Unity URP渲染管线下Shader的自定义物体半透明和投影半透明效果_半透明案例分享】

Unity Shader Graph URP渲染管线下的自定义半透明效果_半透明案例分享

暴走约伯的博客 3295

C++虚函数的作用

定义一个函数为虚函数是为了允许用基类的指针来调用子类的这个函数。 定义一个函数为纯虚函数为了实现一个接口,起到一个规范的作用,规范继承这个类的程序员必须实现这个函数。 虚函数 假设我们有下面的类层次: class A { public: virtual void foo() { cout<<"A::foo() is called"<<endl; } }; class B:public A { publi.

Harrytsz的博客 3260

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

c++虚函数的作用

最近面试c++研发的职位,面试官们问到最多的问题的什么是虚函数,虚函数的作用,为什么要有虚函数以及虚函数的使用等等相关的问题。经过各种资料的查找,我觉得还是要从头到尾的重新认识一下虚函数。         我们都知道,c++为了与c语言能够兼容,c++做出了很大的牺牲,包括保留了struct关键字,还有编译期间添加了好多隐藏的代码。但是虚函数却不能与c语言实现兼容。而且有了虚函数,类的数据对象布

Kikim的地盘 4876

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

C++中虚函数的作用

昨天去面试,面试官问道:虚函数有什么作用,我解释了半天也没解释清楚,其实说到底还是理解不够深刻,或者说简直没什么理解,连子类重写父类的普通函数和子类重写父类的虚函数的区别都不知道,真是弱爆了!!1 虚函数的作用:通过以下两个程序来进行解释! 可以让成员函数操作一般化,用基类的指针指向不同的派生类的对象时,基类指针调用其虚成员函数,则会调用其真正指向对象的成员函数, 而不是基类中定义的...

huabiaochen的博客 2930

虚函数、纯虚函数的作用

虚函数 虚函数的作用: (1)是为了实现多态; (2)虚函数可以让成员函数一般化,用基类指针指向派生类对象,当基类指针调用其虚函数的时候则会调用派生类重写的函数。 代码示例如下: #include<iostream> using namespace std; class Father { public: virtual void talk() { cout << "爸爸在说话!" << endl; }; }; class Son :public Father {

weixin_45866980的博客 2483

c++虚函数的作用是什么?

作者:wuxinliulei 链接:https://www.zhihu.com/question/23971699/answer/69592611 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 首先强调一个概念定义一个函数为虚函数,不代表函数为不被实现的函数。定义他为虚函数是为了允许用基类的指针来调用子类的这个函数。定义一个函数为纯虚函数,才代表函数没有被实现。...

legalhighhigh的博客 3330

虚函数的作用及其底层实现机制

1. C++中虚函数的作用和多态虚函数: 实现类的多态性关键字:虚函数;虚函数的作用;多态性;多态公有继承;动态联编C++中的虚函数的作用主要是实现了多态的机制。基类定义虚函数,子类可以重写该函数;在派生类中对基类定义的虚函数进行重写时,需要再派生类中声明该方法为虚方法。当子类重新定义了父类的虚函数后,当父类的指针指向子类对象的地址时,[即B b; A a = &b;] 父类指针根据赋给它的不同子类

iFuMI的博客 1万+

C++ 虚函数,纯虚函数的作用和使用方法

基类与派生类中有同名函数。在下面的程序中Student是基类,Graduate是派生类,它们都有display这个同名的函数。 #include <iostream> #include <string> using namespace std; //声明基类Student class Student { public: Student(int, string,floa...

菜鸡工坊 8298

纯虚函数的作用

虚函数必须是基类的非静态成员函数,其访问权限可以是protected或public,在基类的类定义中定义虚函数的一般形式:   virtual 函数返回值类型 虚函数名(形参表)   { 函数体 }   虚函数的作用是实现动态联编,也就是在程序的运行阶段动态地选择合适的成员函数,在定义了虚函 数后,可以在基类的派生类中对虚函数重新定义,在派生类中重新定义的函数应与虚函数具有相同的形参个数和形

学海无涯 9250
上一篇: C++拷贝构造函数(深拷贝,浅拷贝)
下一篇: 构造函数和析构函数在基类和派生类之间的调用顺序
ustc_max
博客等级 码龄14年 5粉丝 13原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值