1 类内的成员函数和普通函数的对比

1.1 主要是从参数传递、压栈顺序、堆栈平衡来总结.

1.参数传递:成员函数多传一个this指针
2.压栈顺序:成员函数会将this指针压栈,在函数调用取出
3.堆栈平衡:普通函数是外平栈
对比图如下:

1.2 一段C++代码的分析

这段代码单步会到哪里异常?为什么?

struct Person
{int x ;void Fn_1(){printf("Person:Fn_1()\n");}void Fn_2(){x = 10;printf("Person:Fn_2()%x\n");}
};int main(int argc, char* argv[])
{Person* p = NULL;p->Fn_1();p->Fn_2();return 0;
}

分析:此段代码会成功输出Person:Fn_1(),但在运行p->Fn_2();时出现异常,原因是,在进行x=10;的赋值操作时,类指针为NULL,访问空指针而导致错误,见下图:

1.3 this指针的特点

1.this指针不能做++ -- 等运算,不能重新被赋值.
2.this指针不占用结构体的宽度.

2 继承

2.1 小结

1.继承是数据复制的技术
2.减少重复代码的编写
3.一个父类指针可以指向子类对象是被允许的,是安全的
4.多重继承增加了程序的复杂度,容易出错
5.微软建议使用单继承,如果需要多重继承可以改为多层继承

2.2 代码分析

转载于:https://www.cnblogs.com/flatcc/p/7629942.html

零基础逆向工程24_C++_01_类_this指针_继承本质_多层继承相关推荐

  1. 【零基础学Java】—类的定义(七)

    [零基础学Java]-类的定义(七) 一.事物与类的对比 现实世界的一类事物 属性:事物的状态信息 行为:事物能够做什么 Java中用class描述事物也是如此 成员变量:对应事物的属性 成员方法:对 ...

  2. 身为程序员还看不懂UML类图? 一文带你零基础学会看UML类图!

    身为程序员还看不懂UML类图? 一文带你零基础学会看UML类图! 一,UML类图示例图 二,UML类图图例 三,分步解析说明 3.1 类图: 3.2 接口: 3.3 实现继承 3.4 实现接口: 3. ...

  3. 〖Python零基础入门篇㊲〗- 类的继承、多态与多重继承

    订阅 Python全栈白宝书-零基础入门篇 可报销!白嫖入口-请点击我.推荐他人订阅,可获取扣除平台费用后的35%收益,文末名片加V! 说明:该文属于 Python全栈白宝书专栏,免费阶段订阅数量43 ...

  4. python中编完类后到实例编写_[零基础学python]编写类之一创建实例

    虽然已经对类有了一点点模糊概念,但是,阅读前面一讲的内容的确感到累呀,都是文字,连代码都没有. 本讲就要简单多了,尝试走一个类的流程. 说明:关于类的这部分,我参考了<Learning Pyth ...

  5. 零基础逆向工程28_Win32_02_事件_消息_消息处理函数

    1 第一个图形界面程序 步骤1:创建Windows应用程序 选择空项目步骤2:在新建项窗口中选C++代码文件 创建一个新的cpp文件步骤3:在新的cpp文件中添加:#include <Windo ...

  6. [学习报告]《LeetCode零基础指南》(第四讲) 指针

    学习内容:https://blog.csdn.net/WhereIsHeroFrom/article/details/121551694 一.今日知识点总结 概念 指针 == 地址 数据放置在内存中, ...

  7. [学习报告]《LeetCode零基础指南》(第4讲) 指针

    _1470. 重新排列数组 数组串联 _1920. 基于排列构建数组 _1480. 一维数组的动态和 _剑指 Offer 58 - II. 左旋转字符串

  8. android程序设计魔方矩阵,【图片】【记录】零基础用c4droid写一个3D魔方软件_c4droid吧_百度贴吧...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 9.从前述教程中整理出来的native activity框架 /*请忽视注释中提到的楼层,或结合叜駣的原教程阅读*/ #include #include ...

  9. java 02-cf_厉害!腾讯架构大牛发布Java零基础就业宝典,人生终于不迷茫了

    前言 近几年来,互联网行业变化非常大,除了龙头企业的更替,"裁员潮""失业潮"也不断掀起,尤其是对于年纪太大的程序员真的是不太友好.但是,根据数据统计表明,自2 ...

最新文章

  1. GdiPlus[12]: IGPLinearGradientBrush 的其他构建方式
  2. 服务器登陆密码到期登不上去_英雄联盟手游注册系统炸服怎么回事?服务器瘫痪登不上解决方法[多图]...
  3. 【PP模块】报废(损耗)类别简介(Scrap Categories and Their Effects)
  4. python3 从尾部读取_Python3基础:列表详解
  5. 2021数学建模C题思路数据挖掘
  6. 一面微创题--字符串逆序输出
  7. c语言屏蔽按键,VC实现让关闭按钮成灰色不可用的方法
  8. Datalogic得利捷携最新技术与设备亮相2019两大工业展
  9. 【iOS】使用 otool 命令查看 App 所使用的动态库
  10. stm32f4有重映射么_stm32f4引脚重映射
  11. java scavenge_Java虚拟机(JVM)垃圾回收器Parallel Scavenge收集器 - Break易站
  12. cocos2d 3.11获取机型和系统版本号
  13. 数据结构——竞选海报
  14. log4j2日志输出到控制台-Maven工程
  15. 在计算机教学过程当中,案例教学中计算机基础教学的运用论文
  16. linux dmesg查看时间,查看dmesg中的时间
  17. 全网通工业级3G/4G无线路由器
  18. 支持多线程的Redis 6.0终于发布了!
  19. Designing an IAM Framework with Oracle Identity and Access Management Suite[文摘]
  20. Add User for Power Apps 给PowerApps 添加账号

热门文章

  1. [转载]linux内存映射mmap原理分析
  2. dump查询Java 状态
  3. 采用多播传送FIX行情数据的推荐方案
  4. RUNOOB python练习题9 如何在代码中加入砸瓦鲁多
  5. Storm教程2安装部署
  6. Java之生成Pdf并对Pdf内容操作
  7. 华为完成拉美铜网宽带G.fast技术部署测试
  8. MySQL 日志文件 说明
  9. WAS 报错 Font '宋体' is not available to the JVM
  10. 小议程序员编写技术文档