C++ virtual使用总结

C++动态绑定和模板的简单配合使用(virtual关键字) 对于C++新人来说,virtual就能把我们搞的一头雾水,就更别提牛B闪闪、功能如霸王龙般强大的模板了,有的事情从简单着手,未必不是一个好的策略! 下面是对virtual和template的简单使用 #include using namespace std; class A { public: virtual  void printPrice(string _string){ 阅读详情

案例一:

class A
{
public:
    virtual void print(){
        printf("A::print");
    };
};
class B : public A
{
public:
    virtual void print(){
        printf("B::print");
    };
};

void test()
{
    B b;
    B* p0 = &b;
    A* p1 = &b;
    p0->print();           // B::print,p0/p1都是指向对象b,并且A::print()是virtual的,所以都是调用B::print()
    ((A*)p0)->print();  // B::print
    p1->print();           // B::print
    ((B*)p1)->print();  // B::print
    p0->A::print();      // A::print,派生类调用基类同名函数,调用A::print()
}
结果:

B::print

B::print

B::print

B::print

A::print

 

案例二:

class A
{
public:
    void print(){
        printf("A::print");
    };
};
class B : public A
{
public:
    void print(){
        printf("B::print");
    };
};
void test()
{
    B b;
    B* p0 = &b;
    A* p1 = &b;
    p0->print();          // B::print,指针类型为B*,调用B::print()
    ((A*)p0)->print(); // A::print,派生类指针强制转制为基类,指针类型是A*,调用A::print()
    p1->print();          // A::print,指针类型是A*,调用A::print()
    ((B*)p1)->print(); // B::print,基类指针强制转换为派生类,指针类型是B*,调用B::print()
    p0->A::print();     // A::print,派生类调用基类同名函数,调用A::print()
}

结果:

// B::print

// A::print

// A::print

// B::print

// A::print

【从零开始学习 SystemVerilog】1.1、SystemVerilog 概述 阅读详情

相关推荐

图自编码器(GAE)与变分图自编码器(VGAE)

在学习图自编码器之前先了解一下自编码器与变分自编码器。

小鱼的小窝 1万+

C++多态_virtual

多态按字面的意思就是多种形态。当类之间存在层次结构,并且类之间是通过继承关联时,就会用到多态。C++ 多态意味着调用成员函数时,会根据调用函数的对象的类型来执行不同的函数。我们知道,面向对象编程思想就是为了节省代码的重复编写,那么我会围绕节省代码编写的例子去讲多态,可能例子会有些莫名其妙,但是知道这个道理就行了。class Person{ // 基类Person:成员有a、bpublic:int a;int b;}void print() // 基类添加一个打印成员的函数,会继承到派生类。

qq_52572621的博客 1686

一本集成电路静态时序设计经典之作(可下载)

本书全面深入探讨集成电路设计中关键技术的专著,涵盖了从基础知识到高级应用的各个方面。本书详细介绍了集成电路的发展历程、**静态时序分析的重要性、基本时序模型、时序信息库文件的构建、时序约束的设置、串扰噪声的影响及其控制方法**,并通过实战案例展示了如何进行有效的时序分析和优化。

nuoweishizi的博客 848

虚函数

目录 定义 作用 示例 虚函数的实例 条件 其他信息 c++的虚函数 一, 什么是虚函数 二, 虚函数的实现 三, 代码示例 CallVirtualFun方法 最后的说明 展开 定义 作用 示例 虚函数的实例 条件 其他信息 c++的虚函数 一, 什么是虚函数 二, 虚函数的实现 三, 代码示例 CallVirtua

cuiyifang的专栏 501

华为私有云HCS 8.1.1实战:从镜像制作到云主机发放全流程指南

本文详细解析了华为私有云HCS 8.1.1从镜像制作到云主机发放的全流程实战指南。内容涵盖制作标准化QCOW2镜像、配置云主机规格与主机组、规划外部网络,以及在运营面为租户初始化资源、配置审批流与产品目录。最后,通过用户视角演示了从创建VPC网络到申请、审批并最终绑定EIP访问云主机的完整操作步骤,为运维人员和架构师提供了一套清晰、可落地的HCS部署与管理实践方案。

weixin_29305313的博客 1124

深入解析高通Adreno DPU的DRM/KMS驱动架构与硬件协同设计

本文深入解析了高通Adreno DPU的DRM/KMS驱动架构与硬件协同设计,详细介绍了Adreno DPU的核心模块组成、显示接口设计以及DRM驱动架构。通过实际案例和调试技巧,帮助开发者理解硬件与软件的协同工作原理,优化显示性能并解决常见问题。

weixin_29266679的博客 436

【牛客 题库】 virtual 函数 求输出结果

1.求输出结果 #include   using namespace std;   class A { public:     virtual void print()     {         cout << "A::print()" << "\n";     } };   class B: public A { public: virtual void print()     {    

Zender 429

rk3588上适配wifi模组aic8800

记录一下在rk3588上调试aic8800,调试分为Debian11以及Android12两个平台,这里主要是讲过程以及修改的过程,以补丁的形式来提供解决方法。在Debian11下主要通过配置设备树、编译驱动并自动加载固件完成调试,详细介绍了设备树修改、驱动编译脚本调整和驱动加载流程。

m0_60805802的博客 1002

python虚函数_虚函数和纯虚函数的区别

首先:强调一个概念定义一个函数为虚函数,不代表函数为不被实现的函数。定义他为虚函数是为了允许用基类的指针来调用子类的这个函数。定义一个函数为纯虚函数,才代表函数没有被实现。定义纯虚函数是为了实现一个接口,起到一个规范的作用,规范继承这个类的程序员必须实现这个函数。1、简介假设我们有下面的类层次:class A{public:virtual void foo(){cout<}};class B...

weixin_42346935的博客 4302

013 PID参数整定:Ziegler-Nichols法

几年前在调试一台伺服压机,客户要求位置精度±0.01mm,响应时间小于50ms。我按照教科书上的经验值设了P=1.5,I=0.02,D=0.01,结果电机一启动就开始尖叫,位置超调直接干到0.3mm,然后开始震荡,像极了喝醉的舞者。现场工程师看我的眼神,就像在看一个刚毕业的实习生。那次之后我明白了一个道理:PID参数不是靠猜的,也不是靠经验公式硬套的。你需要一个系统的方法,而Ziegler-Nichols法就是那个让你从“瞎调”走向“有章可循”的起点。

m0_50546716的博客 99

基于计算机视觉的无人便利店技术:从算法到部署的系统化实战指南

摘要:本文系统介绍了基于计算机视觉的无人便利店技术方案,提出"商品检测-跟踪-动作识别-防损-结算"五段式流水线架构。详细阐述了YOLOv8-Seg商品检测、OC-Sort多目标跟踪、3D-CNN+ST-GCN动作识别等核心算法实现,并完成NVIDIA Jetson Xavier NX边缘端的优化部署。通过TensorRT量化、DeepStream加速等技术手段,系统在保持94.7%动作识别准确率的同时,将漏单率降至0.8%,单店云端算力成本较行业平均降低84%。所有代码已开源,可直接应

博客 624

C++中virtual函数的使用

我们先不使用 virtual,构造一个最简单的类shape,和它的子类rectangle。 class shape { public: void CalculateArea(){ cout << "There is no area" << endl; } }; class rectangle: public shape { public: double Calcu...

雪山飞狐 573

ximalaya 新xm-sign逆向思路

本文主要介绍目标网站新xm-sign值的逆向思路。仅代表个人理解,如有其他建议可在评论区沟通。声明仅仅记录一下自己的学习方法,不作为其他参考、更不作为商业用途。如有侵犯请联系本人删除。

weixin_66580433的博客 2017

C++细节学习之non-virtual、virtual和pure virtual函数的使用区别

首先我们需要明白c++中的继承到底继承了什么? public继承中,我们可以理解为两部分:函数接口继承和函数实现继承。 函数接口相当于声明,实现相当于定义。pure virtual函数:只继承接口,实现需要我们自己去写 virtual 函数:继承接口和默认的实现,我们可以重写实现 non-virtual 函数:继承接口和强制性的实现,一般我们不该去重写non-

u010818535的专栏 1538

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

c++ virtual关键字的使用

new的对象是谁,其调用virtual函数时,即调用谁 class father { public: virtual void v_pp() { printf("this is virtual father"); } void pp() { printf("this is father"); } }; class child { public: void v_pp() { printf("this is virtual child"); } void pp() { p

qq_23953675的博客 458

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

C++ Virtual关键字的非常规使用

今日,在工作中遇到了一种以前从没见过的virtual关键字的用法,起初百思不得其解,而后搜索了一下资料进行阅读后算是得出一个说得通的解释。         问题如下:C++ Dll导出类导出函数很常见,当间接方式导出类时,类非静态成员必须加virtual关键字。否则使用该dll的工程会出现链接错误。 test_class.h #pragma once   class TestClassA

611

jre9下载 jdk9

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

C++ : 继承问题 [virtual函数调用,为什么禁止在virtual使用默认参数]

在virtual函数中使用默认参数,因为virtual是动态绑定,导致都是调用了子类函数,但是默认参数是根据指针类型来使用的。当指针类型与实体类型不一致时,很不容易分清楚其调用规则。当指针类型与实体类型一致时,很容易分清楚其调用规则。virtual函数,通过指针调用的是子类函数。非virtual函数,取决于指针的类型。

EastWood2013的个人空间 372

C++学习-基类析构函数必须使用virtual原因记录

C++中,为了避免派生类被基类指针指向并释放时,派生类的析构函数不会被调用所产生的内存泄漏问题,析构函数一般使用virtual修饰 Women.hpp class BaseClass { public: virtual ~ BaseClass(); //1.这里不使用virtual,在子类释放时就会发生内存泄漏 virtual void sayWhatWrongWithYou();...

CaicaiNo.1 342

C++使用虚函数的时候,子类也要使用virtual关键字吗

父类使用虚函数是为了让子类重写,那子类重写的时候也需要带virtual关键字吗?比如: class Base{ virtual bool init(); }; class Derived{ virtual bool init(); //这里的vitual是必须的吗?好像不用也能编译通过呃….. };c++规定,当一个成员函数被声明为虚函数后,其派生类中的同名函数都自动成为

知之可否 2万+

C++多态特性:virtual关键字的使用

C++多态特性:virtual关键字的使用

欧特GO 626

C++ virtual的使用

C++中虚函数用法 参考文章:https://www.cnblogs.com/weiyouqing/p/7544988.html 通过对该文章的理解得出以下笔记 1、对象指针是什么类型的,就调用对应的函数,即使该指针指向了子类等,因为是在编译器编译阶段确定的,此时只能根据对象类型,链接指定的函数指针。 2、如果同一个函数,在不同的子类有不同的重载(开发中一般定义的是基类指针,这样可以随意指向任何子类对象), 如果需要根据当时该指针指向了那个对象,就调用那个对象对应的方法,需要将该方法声明称virtual的;

younkerjqb的专栏 324

不使用virtual关键字实现C++多态

#include using namespace std; /* 不使用virtual实现多态可以用成员函数指针完成。 成员函数指针形式:返回类型(A::*指针名)(形参表) 其中A是类类型,即这个指针是指向A类的成员函数的函数指针 例如:int(A::*P)(int,int)这

iFuMI的博客 1359

C++中virtual虚函数的使用

基类中函数设置为虚函数,根据对象类型,调用一次基类的函数,调用一次子类的函数。基类中函数不设置为虚函数,调用了两次基类的函数。虚函数virtual是在基类继承时实现多态的。函数是虚函数,调用对应于指针,指向对象的函数。函数不是虚函数,调用对应于指针类型的函数。

weixin_45778713的博客 523

C++ primer explicit和virtual的使用

explicit,和构造函数一起使用. explicit constructor指明构造函数只能显示使用,目的是为了防止不必要的隐式转化. 举个例子:   有这样一段代码: class A {    public:      A(int);    private:      int num; }; int Test(const A&) // 一个应用函数 {

dangyajuan的专栏 1141

【C++】使用 virtual 和 = 0 来实现多态和抽象行为

这个语法实质上是在告诉编译器和其他开发者,任何派生自该类的类都必须实现这个函数,否则它们也会成为抽象类,不能实例化对象。当基类声明一个函数为虚函数时,C++ 运行时使用一种称为虚函数表(vtable)的机制来动态决定应调用哪个类的函数。这使得程序在运行时能够根据对象的实际类型来选择正确的函数版本,而不是编译时绑定的类型。的目的是允许通过基类指针或引用调用派生类的函数,这是多态的基础——即同一个函数调用可以表现出多种不同的行为。的函数将无法编译,迫使开发者检查并更新派生类以匹配新的基类接口。

qq_46049113的博客 786

C++基础之关键字——virtual原理以及使用

virtual可以修饰普通成员函数和析构函数;不可以修饰构造函数,友元函数,static静态函数;virtual具有继承性:父类中定义为virtual的函数在子类中重写的函数也自动成为虚函数。

qq_45443879的博客 6122
上一篇: symbian 3rd/5th 修改应用程序图标
下一篇: symbian 3rd/5th 复合控件的两种实现方式
code09
博客等级 码龄18年 31粉丝 56原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值