zoukankan      html  css  js  c++  java
  • 零基础逆向工程24_C++_01_类_this指针_继承本质_多层继承

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

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

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

    1.2 一段C++代码的分析

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

    struct Person
    {
    	int x ;
        void Fn_1()
    	{
    		printf("Person:Fn_1()
    ");
    	}
        void Fn_2()
    	{
    		x = 10;
    		printf("Person:Fn_2()%x
    ");
    	}
    };
    
    
    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 代码分析

  • 相关阅读:
    Redis 常用命令整理
    TCP系列01—概述及协议头格式
    TCP/IP详解--TCP网络传输数据包1460MSS和1448负载
    TCP中报文段大小(MSS)、MTU
    DNS 过滤脚本
    TCP SYN Cookies – DDoS defence
    python virtualenv venv 虚拟环境
    git 命令总结
    王兴三横四纵
    获取国税门户可供下载的资源文档
  • 原文地址:https://www.cnblogs.com/flatcc/p/7629942.html
Copyright © 2011-2022 走看看