分类: C++基本语法

10 篇文章

IDA判断是否虚继承,C++菱形继承下的类布局
IDA中对于菱形继承中是否为虚继承的判断 最近遇到了一种菱形继承关系的类结构,在判断C1、C2是否为虚继承C上产生了疑问,因此这里写一篇博客来分析自己的一些技巧。 如何判断C1、C2是否是虚继承C? 一种比较简单的办法是通过查看typeinfo for C1的…
C++纯虚函数、纯虚析构函数、协变返回类型
虚函数 虚函数是通过基类指针或引用来实现多态性的一种方法。为了确保在运行时正确调用派生类中的函数,虚函数需要在基类中有一个具体的实现,即使这个实现可能从未被直接调用。这样做的原因包括: 基类实例的使用:虽然大多数情况下,基类的实例不会直接使用虚函数,但在某些情…
C++抽象类与接口
引入原因:为了方便使用多态特性,常在基类中定义虚函数,在很多情况下,基类本身生产对象是不合理的,例如动物作为一个基类可以派生出老虎、孔雀等子类,但是动物本身生成对象明显不符合常理。 因此为了解决上述问题,引入纯虚函数的概念,将函数定义为纯虚函数,virual …
一次讲清楚结构体大小的计算
一次讲清楚结构体大小的计算 结构体大小的计算,可分为三类: 一般结构体 含有嵌套的结构体的 指定字节对齐数的结构体 在说明结构体大小计算方法之前,先介绍字节对齐。 字节对齐(Byte Alignment)在计算机系统中是一种优化机制,旨在提高内存访问的效率和系…
C++11 强制类型转换
C++11 强制类型转换 当我们将一个数据类型转换为另一种类型时,这个过程被称为类型转换。如果将这里的数据类型替换为对象类型的指针或引用,那么对象类型之间的转换,就又称为向上转型或者向下转型。 假设有基类和派生类两种对象类型的指针或引用,对于派生类可以使用向上…
C++虚函数表底层结构
C++虚函数表底层结构 C++ 通过虚函数指针和虚函数表实现多态,但是具体底层是如何实现的呢。可以通过下面这个例子来分析 #include <iostream> using namespace std; class base{ virtual vo…
C++ 友元
C++ 友元 在C++中,友元(Friend)功能是一个重要的特性,它允许一个类或函数访问另一个类的私有(private)和保护(protected)成员。使用友元特性可以提高程序的灵活性,但同时也要小心管理,因为它破坏了类的封装性。 友元函数 友元类 友元成…
c++ 基本语法(1)
define - undef #define 和 #undef 是 C++ 中的预处理指令,用于定义和取消定义宏。 #define: #define 用于定义宏,宏是一种简单的文本替换机制,在预处理阶段将宏名称替换为对应的文本内容。 宏的一般格式为 #defi…