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

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

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

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

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,访问空指针而导致错误,见下图:
1135275-20171005204149849-1234870363.png

1.3 this指针的特点

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

2 继承

2.1 小结

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

2.2 代码分析

1135275-20171005233950833-600791674.png

1135275-20171005234056115-1080730366.png

1135275-20171005234123177-1695855204.png

1135275-20171005234158365-726864980.png

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/399651.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Wordpress基础:精简头部wp_head

https://www.cnblogs.com/tinyphp/p/5859167.html Wordpress基础&#xff1a;精简头部wp_head 在Wordpress里 <?php wp_head(); ?> wp_head()是一个重要的函数&#xff0c;它允许插件开发者向你的站点动态地添加CSS和javascript&#xff0c;如果我们不在模板中引入这…

Nodejs架构之json空处理

2019独角兽企业重金招聘Python工程师标准>>> 判断一个json是否存在某个对象。 正确的做法是 data {"mch_id":"12345678","hb_type":"NORMAL","hblist":"dddd"}; if(data ! null && data.hbli…

C#代码计时

using System.Diagnostics;Stopwatch sw new Stopwatch(); sw.Start(); //todo code ....... sw.Stop(); Console.WriteLine("执行此段代码耗时&#xff1a;{0} ms", sw.ElapsedMilliseconds); 转载于:https://www.cnblogs.com/songtzu/p/3593462.html

【37.68%】【hdu 5918】Sequence I

Time Limit: 3000/1500 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Total Submission(s): 706 Accepted Submission(s): 266 Problem Description Mr. Frog has two sequences a1,a2,⋯,an and b1,b2,⋯,bm and a number p. He wants to know the number o…

WordPress的body_class()函数详解

https://www.cnblogs.com/xcxc/p/3658903.html WordPress的body_class()函数详解 wordpress的body_class()函数&#xff0c;顾名思义&#xff0c;这个函数根据不同的页面类型为body标签生成class选择器&#xff0c;从而让设计人员可以各方便灵活的控制不同页面中的各个元素。本…

表达式求值及转换算法

2019独角兽企业重金招聘Python工程师标准>>> 后缀表达式求值算法 stack operands; //运算数栈 while(没到表达式尾) {scanf("一个运算对象op");if(op is 运算数)operands.push(op);else if(op is 运算符){operand_right operands.pop();operand_left o…

2017-10-06-构建之法:现代软件工程-阅读笔记

单元测试&#xff1a; 常见单元测试的核心步骤&#xff1a;设置数据&#xff0c;使用被测试类型的功能&#xff0c;比较实际结果和预期的结果 好的单元测试的标准&#xff1a; 应在最基本的功能、参数上验证程序的正确性 应由程序的作者写 测试完毕后机器状态保持不变 要快 独立…

Use Selenium webdriver in Javascript

目标 分别用Firefox和Chrome打开google主页&#xff0c;输入selenium进行搜索&#xff0c;3秒后&#xff0c;再输入nodejs进行搜索。 环境需求 1. javascript运行平台&#xff1a;nodejs2. node module: selenium-webdriver在命令行中运行npm -g install selenium-webdriv…

关东升的iOS实战系列图书 《iOS实战:传感器卷(Swift版)》已经上市

&#xfeff;&#xfeff;承蒙广大读者的厚爱我的 《iOS实战&#xff1a;传感器卷&#xff08;Swift版&#xff09;》京东上市了&#xff0c;欢迎广大读者提出宝贵意见。http://item.jd.com/11760248.html 欢迎关注关东升新浪微博tony_关东升。 关注智捷课堂微信公共平台&#…

带分页的标签

原型图 图片.png重要的实现代码 var getMemo function(pageNo,name){$(#dataDiv).html("");$.ajax({url: basePath "/signIn/set/getSignSetListPage",datatype: json,type: "POST",data: { "pageNo": pageNo,"name":name…

jquery复选框 选中事件 及其判断是否被选中_常用笔记

checkbox的change事件可监听是否选中状态&#xff0c;也可添加onclick事件。var dom$(.checkbox);1. 判断checkbox是否被选中 var dom$(.checkbox);dom.prop(checked); //实现控制checkbox是否选中状态: 切换到初始状态  if (!(dom.prop(checked))) {   dom.prop(c…

线段树hdu1754

#include<iostream>#include<stdio.h>using namespace std;const int maxa200005;int val[maxa];struct tree{int max, left, right;}tree[maxa*3]; int create(int root,int left,int right) //root的*2和*21分别存root的前后部分{ tree[root].leftleft; tree[roo…

Apache2 部署flask项目

Apache2 部署flask项目 需要安装的插件&#xff1a; apt-get install apache2 apt-get install libapache2-mod-wsgi 在 /etc/apache2/sites-available/ 目录下创建对应的项目配置文件“xxx.conf”&#xff0c;用于项目与Apache2之间的链接(配置文件名自定义)&#xff1a;…

显示中文

开机点击“开始菜单”-->”首选项“-->”Raspberry Pi Configuration“-->”Localisation“下设置中文及本地时间。 树莓派默认是采用英文字库的&#xff0c;而且系统里没有预装中文字库&#xff0c;所以即使你在locale中改成中文&#xff0c;也不会显示中文&#xff…

[iOS Animation]-CALayer 性能优化实例

2019独角兽企业重金招聘Python工程师标准>>> 一个可用的案例 现在我们已经对Instruments中动画性能工具非常熟悉了&#xff0c;那么可以用它在现实中解决一些实际问题。 我们创建一个简单的显示模拟联系人姓名和头像列表的应用。注意即使把头像图片存在应用本地&…

【More Effective C++】Item 6

Item 6&#xff1a;区别Increment和Decrement操作符的前置&#xff08;prefix&#xff09;和后置&#xff08;postfix&#xff09;形式  前置和后置的区别主要在于函数参数不一样&#xff0c;后置形式中多了一个int型的参数&#xff0c;在后置形式被调用时&#xff0c;编译器…

WordPress 多语言支持(本地化)

https://www.cnblogs.com/ryanzheng/p/8309261.html WordPress 多语言支持&#xff08;本地化&#xff09; 本博客将介绍WordPress的多语言制作 首先需要在wp-content目录下创建一个languages文件夹&#xff0c;用于存放语言包文件。 然后在模板目录下的functions.php&…

timestamp与timedelta,管理信息系统概念与基础

将字符串‘2017年10月9日星期一9时10分0秒 UTC8:00’转换为timestamp。100天前是几号?今年还有多少天&#xff1f;管理有不同层次所需信息各有什么特点?管理信息系统从层次上可分为哪几类&#xff1f;数据处理经历了哪些阶段&#xff1f;各有什么特点&#xff1f;什么是web&a…

ZooKeeper1 利用虚拟机搭建自己的ZooKeeper集群

前言: 前段时间自己参考网上的文章&#xff0c;梳理了一下基于分布式环境部署的业务系统在解决数据一致性问题上的方案&#xff0c;其中有一个方案是使用ZooKeeper&#xff0c;加之在大数据处理中&#xff0c;ZooKeeper确实起到协调服务的作用&#xff0c;所以利用周末休息时间…

公共的Controler,是给非授权的用户访问

issue: 我使用的环境是Vs2012 , 创建了MVC4的工程&#xff0c;然后在工程里面Webconfig, 添加了访问限制 <authentication mode"Forms"> <forms loginUrl"~/Account/Login" timeout"2880" /> </authentication> <…