一个使用虚函数的例子 ---> 南郁老师

Zynq工程IP核封装:XCI引用与约束继承实战指南 IP核封装是FPGA系统设计中实现模块复用、团队协作与技术资产沉淀的关键环节。其本质是将功能逻辑、时序约束、接口协议和硬件配置统一抽象为可配置、可验证、可演进的标准化组件。核心原理在于通过XCI文件保留IP核的参数化定义能力,依托Vivado IP Packager实现约束继承、端口自动映射与时钟域解耦,从而保障跨项目集成的时序可信性与约束完备性。该技术广泛应用于Zynq SoC视频处理、高速接口(如HDMI/TMDS)、多时钟域控制系统等场景,尤其在需要长期维护与版本迭代的工业级嵌入式开发中具有不可替代的 阅读详情

原文:当“友元”遇到“虚函数” http://student.youkuaiyun.com/space.php?uid=112600&do=blog&id=17266

要理解有时候,人们其实就是在故意做这种事,最典型的做法,就是通过非虚函数调用虚函数:  

Code:
  1. class B  
  2. {  
  3. public:  
  4.     void Action()  
  5.     {  
  6.              this->DoAction();  
  7.     }  
  8. private:  
  9.       virtual void DoAction() = 0; //一个私有的纯虚函数  
  10.   
  11.     //  friend class A; 
  12. };  

 任何一个合格的C++程序员,都应该学会这种作法。DoAction是一个纯虚函数,这里我们更决绝一点,干脆让它是私有的,这就是逼着派生类自己去实现一个完全自我的DoAction(),假设有个class D : public B,并且听话地实现了DoAction。具体D的定义,为节省点篇幅,不写了。

 注意到第11行的注释, class A 现在已经不是 B 的友员了,但不要紧,我们只是想在新版的类A中,调用Action函数,而它是public的,所以这里不需要友元来搅和。

Code:
  1. class A  
  2. {  
  3.       void test()  
  4.       {  
  5.                B* pb = new D; //pb 实际指向一个D对象。  
  6.                pb->Action(); // Action 是 公开的,所以可以调用  
  7.       }  
  8. };  

 pb 调用了非虚的B::Action函数,但在Action内调用了虚函数DoAction,再由于pb实际指向的是D对象,所以最终调用的是D::DoAction()——这了无新意对不对?只要学过一点C++的多态,都会懂这一点。没错,它太司空见惯了,基本上所有C++程序员每天都会在写类似的代码——这就是我想说的,有时候,看起来在调用基类的代码,但实际上在调用派生类的代码。假设我们修改了语法规则,逼着虚函数在遇上友元之后失效,那就是逼着程序员不去用friend,去将更多本来应该是private的成员,用各种该法写成public的。

嵌入式Linux Qt应用程序卡死问题分析记录 根据应用和系统层面的分析,软件功能异常和卡死现象的原因是系统控制台/dev/console阻塞导致依赖其的相关应用和命令异常。系统控制台/dev/console阻塞的原因还未确定,最近的软件版本和其他测试同事未出现该问题,所以很大可能是串口线的问题,待后续有进展了继续更新。 阅读详情

相关推荐

基于Yolo11的无人机小目标检测系统的设计与性能优化改进项目实现

该项目旨在开发一个基于YOLO11的无人机目标检测系统,能够实时识别并定位无人机拍摄过程中捕捉的小目标。考虑到无人机拍摄的目标通常较小,系统将采用特定的调优策略,以提高小目标的检测精度和召回率。

m0_73723097的博客 1205

你终归是逃不过,DNA双螺旋编织好的宿命

       记得去年华科的秋天,银杏开的很亮的那种黄色,夜晚的灯光和叶子交相辉映,让人看着看着就感觉在童话里,经常有人在下面拍照,明媚的银杏大道,洒下了多少欢声笑语,光阴荏苒,又是一年杏黄时,可我依旧单身啊,每每见到在银杏树下携手散步的情侣,总忍不住羡慕一番,啥时候能遇到自己的爱情啊,然而大部分情况是也就只能想想咯,华科三比一的男女比例,狼多肉少,想脱单是难上加难啊,其实自己一直坚定的认为主要还...

东方 1653

(超详细)Qt入门和配置Visual Studio的Qt环境

内容写了Qt入门,创建并编写第一个Qt程序,以及配置VS编写Qt程序的环境。(超级详细)

LY549826LY549264的博客 7679

这世界 ,我不想妥协

     上次从郁离歌的公司回来之后,学校又组织我们参观了2018isc物联网安全大会,当时郁离歌也正在和 ShadowGlint师父在打网鼎杯,ShadowGlint也是大二菜鸡联盟圈子里的,我们便一起相约同行。       第一次能有这样的机会去参加这种会议,非常开心噻,感情不顺利学业总不能耽搁嘛,一路颠簸来到了鸟巢旁边的国家会议中心,一开始找展厅找了半天才找到。排队挺无聊,客服挺好看,恩。。...

东方 758

【工具】GitHub学生认证+PyCharm配置Copilot全流程指南

本文提供了一份详细的GitHub学生认证及在PyCharm中配置Copilot的完整指南。通过完成A2F认证、准备有效材料并使用干净网络环境,学生可免费获取GitHub Copilot Pro订阅,极大提升编程学习与开发效率。

w7x8y9z的博客 1459

告别手动脚本!用TSMaster Python小程序5分钟搞定CAN报文自动发送

本文介绍了如何使用TSMaster的Python小程序功能快速实现CAN报文自动发送,大幅提升汽车电子测试效率。通过简洁的Python代码示例,展示了如何替代传统手动操作和复杂C脚本,实现周期性发送、动态修改报文内容等常见需求,帮助工程师5分钟内完成自动化配置。

weixin_30292843的博客 512

虚函数的应用举例

使用动态指针就是为了表达一种动态调用的性质即当前指针指向哪个对象,就调用那个对象对应类的成员函数。那要怎么来解决的,这时虚函数就体现出了它的作用: #include #include class Graph { protected: double x; double y; public: Graph(double x,double y); void virtual showArea(

小桥流水的专栏 1006

关于42步进电机驱动——基于STM32 HAL库实现

我找了好多资料,好多关于42步进电机的都是文档,这么文档都需要积分,需要积分就算了内容还非常差,浪费时间和电脑的内存。关于大部分是基于Arduino和51去驱动的 42步进电机驱动硬件如下: 首先你要了解步进电机的驱动原理,我也不啰嗦了,请看这边博客: 二相四线,四相五线,四相六线步进电机接线及驱动方法 , 看完这篇你就知道驱动和接线的原理了。 起初我也为如何接线烦恼,因为有些博客在讲述这些问题的时候没有讲的很透彻。 方法如下: ①用万用表调到欧姆档,用其中一个表笔搭在一个引脚上,依次测其它.

Jodan132的博客 1万+

虚函数例子

解释虚函数的例子(父类子类指针函数调用注意事项)父类子类指针函数调用注意事项<br />1,如果以一个基础类指针指向一个衍生类对象(派生类对象),那么经由该指针只能访问基础类定义的函数(静态联翩)<br /><br />2,如果以一个衍生类指针指向一个基础类对象,必须先做强制转型动作(explicit cast),这种做法很危险,也不符合生活习惯,在程序设计上也会给程序员带来困扰。(一般不会这么去定义)<br /><br />3,如果基础类和衍生类定义了相同名称的成员函数,那么通过对象指针调用成员函数时,到

避免忘记 1943

deepfake detection数据集

最全Deepfake数据集总结,包含各个数据集下载链接: https://github.com/deepfakeinthewild/deepfake_in_the_wild Dataset name Download Generate method Deepfake videos Actors Deepfake-TIMIT low download De...

where_is_horse的博客 1万+

数字IC设计之时序分析基础概念汇总

时序分析主要有两种办法:静态时序分析: (static timing analysis,STA),是遍历电路存在的所有时序路径,根据给定工作条件(PVT)下的时序库.lib文件计算信号在这些路径上的传播延时,检查信号的建立和保持时间是否满足约束要求,根据最大路径延时和最小路径延时找出违背时序约束的错误。

weixin_45230720的博客 5607

欢迎来到地狱 WriteUp(2019暑假CTF第一周misc)

目录 0707,0708,0709 题目地址:欢迎来到地狱 1.地狱伊始.jpg 1.5地狱之声.wav 2.第二层地狱.docx 3.快到终点了.zip 参考 0707,0...

afu42832的博客 645

C# 固高板卡(总线型) 操作类

主要功能有:初始化,轴使能,正负方向手动移动,回0,点到点移动,等待移动完成,输入IO数据读取,输出IO控制,清除报警等功能。

StevenChen的博客 572

C++11程序设计要点总结-虚函数和纯虚函数

C++程序设计要点总结- 今天我们来讲一下虚函数和纯虚函数,那么这两个是什么意思呢,和我们OOP编程又有什么关系呢,别急马上就告诉你,那么讲之前我需要让大家理解一下什么是接口,接口用官方话来说就是:接口泛指实体把自己提供给外界的一种抽象化物(可以为另一实体),用以由内部操作分离出外部沟通方法,使其能被内部修改而不影响外界其他实体与其交互的方式。 用白话文来说声明一个方法,在继承他的类中把他实现出来...

轩辰的博客 814

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

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

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

虚函数的一个例子

做了一个虚函数的例子。在父函数中指定了print是虚函数,那么父类就可以调用子类的print方法。 答案是: A::construct B::construct This is B B::destroy A::destroy 请按任意键继续. . . 注意: 1,2,用指针或者引用将B传个A,虚函数生效。3直接值传递,不生效。 #include usin

Thinking 1875

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

关于虚函数的应用(10个例子)

关于虚函数的应用(10个例子) Author: bakari  Date: 2012.4.8 装载引用请注明出处:http://www.cnblogs.com/bakari/archive/2012/08/12/2635369.html   谢谢!

boy850961407的专栏 620

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

虚函数的举例

父类和子类的同名同形参的函数,使用指针调用或者是直接调用,如果该函数在父类不是虚函数,那么无论那种方式调用,父类的同名函数都会覆盖子类。 #include <iostream&gt; using namespace std; class A { public: void print() { cout << "this is A" << endl; } }; class B : ..

weixin_45024226的博客 437

whaleCTF-30days-密码学【第二期】-培根的愤怒-writeup

题目: 我这么精辟的密码为什么不能入大流!?今天我将于RSA和AES并肩行走哈哈! 答案格式whaleCTF{xxxx},xxx为解密内容 打开压缩包,发现有一个RSA.txt,一个bacon.docx,打开bacon.docx发现需要密码,考虑从RSA.txt下手: 打开RSA发现熟悉的内容: e=65537 d=1764836219594882187843234147880131...

CTF小白的爬坑之路 1072

NJUPTCTF-2018出题心得

NJUPTCTF-2018出题心得 NJUPTCTF-2018结束也有几个月了,我也是昨天才忙完各种琐事,包括比赛、考试、出题、总结等等。这段时间经历的事情太多,心也逐渐疲惫,同时感到和同龄人的差距越来越大。现在要补这几个月落下的东西,昨天把CTF学习交流群的入群题出了一下,题目比较简单,希望师傅们别喷。这段时间欠的最久的应该就是校赛的出题心得了吧。虽然我的题全部都有人解出,但是还是有很多人要我写...

郁离歌丶的博客 7156

C++虚函数的定义与意义

我们知道,在同一类中是不能定义两个名字相同、参数个数和类型都相同的函数的,否则就是“重复定义”。但是在类的继承层次结构中,在不同的层次中可以出现名字相同、参数个数和类型都相同而功能不同的函数。例如在例12.1(具体代码请查看:C++多态性的一个典型例子)程序中,在Circle类中定义了 area函数,在Circle类的派生类Cylinder中也定义了一个area函数。这两个函数不仅名字相同,而

u011392772的专栏 5887

南京邮电大学网络攻防平台writeup ————密码学

1、easy题目提示:思路:这是一个加密解密型试题,根据其特点可知是采用base64加密的,所以可以直接使用base64在线解密即可。1.   在线搜索一个base64在线解密网站。      推荐链接:http://base64.xpcha.com/2、KeyBoard题目提示:思路:题目中多次强调“看键盘,看键盘,看键盘”,所以可以确定题目中给定的字母序列的编写与键盘密切相关,根据给定的字母序...

Fly_鹏程万里 3013

NCTF 南京邮电大学网络攻防平台 writeup(web部分)持续更新

题目来源,南京邮电大学网络攻防训练平台 http://ctf.nuptzj.cn/   一、签到题 迷雾与真相就隔着一个F12,得flag ctf{flag_admiaanaaaaaaaaaaa}   二、md5 collision 题目描述如下 源码 &lt;?php $md51 = md5('QNKCDZO'); $a = @$_GET['a']; $md52 = @md5...

Taowood的博客 8658

十个例子让你完全搞懂 C++ 的虚函数(不懂来找我)

Author: bakari  Date: 2012.4.8 装载引用请注明出处:http://www.cnblogs.com/bakari/archive/2012/08/12/2635369.html   谢谢! 虚函数是C++中非常重要的一个概念,它最大的好处是能够触发动态绑定。C++中的函数默认不使用动态绑定,要触发动态绑定,必须满足 两个条件: 第一,只有指定为虚函数的成员函数才能...

weixin_34326558的博客 431

C++虚函数经典例子

1, #include "stdio.h" #include using namespace std; class A { public: virtual void print() { cout << "A::print()" <<endl;} }; class B: public A { public: virtual

lskyne的专栏 5124

南邮ctf web 的 wp

没事干今天就把南邮的题刷一下233333,小白上路大佬勿喷 1. 直接右键查看元素,就发现了flag。 关键是&lt;a style="display:none"&gt;这条html属性,让flag不显示。 nctf{flag_admiaanaaaaaaaaaaa}  2.   看到输入框让我们输入口令,好我们就输进去,结果还是不行,那我们还是右击查看元素 不好zhimaka...

天跃 737

NCTF2019-官方writeup

NCTF2019-官方writeup

郁离歌丶的博客 2465
上一篇: 浅议windows内存管理[来自网络]
下一篇: 在VC6中使用自己喜欢的字体 ---&gt; 来源:网络
mtfxabc
博客等级 码龄17年 12粉丝 66原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值