Howl's Blog
  • Home
  • Portfolio
  • Category
  • Archive
  • About Me
c++对象模型之虚表,虚表指针,thunk,多态,多重继承this指针偏移,多重继承virtual析构函数,多重虚继承下的访问虚基类成员变量时虚表的工作原理

c++对象模型之虚表,虚表指针,thunk,多态,多重继承this指针偏移,多重继承virtual析构函数,多重虚继承下的访问虚基类成员变量时虚表的工作原理

前言 上两篇文章将c++的核心部件(Value categories)讲清楚了,这篇文章将会带大家分析c++对象模型的底层原理。笔者这里用的编译器是clang version 10.0.0-4ubuntu1,不同编译器对数据布局的处理可能会不同(《深度探索c++对象模型》中已阐述原因,感兴趣的读者可以自行阅读)。 友情提示:本文章涉及ATT式和intel式汇编代码的相关知识。 虚表和虚表指
2022-02-19
C++
C++11,14,17中auto和decltype相关知识及拓展

C++11,14,17中auto和decltype相关知识及拓展

前言 这篇文章是上篇文章《C++prvalue,xvalue和lvalue的相关知识》的续作,上次我们已经把prvalue,xvalue和lvalue说清楚了,本篇文章就来探讨一下prvalue,xvalue和lvalue与decltype之间的联系。顺便咱们也把auto类型说明符也都拓展一下。 从初始化器和表达式中推导( Deduction from Initializers and Ex
2022-02-09
C++
用反汇编分析c++RVO开启和关闭时的底层原理以及C++prvalue,xvalue和lvalue的相关知识

用反汇编分析c++RVO开启和关闭时的底层原理以及C++prvalue,xvalue和lvalue的相关知识

前言 本篇文章主要讲述C++prvalue,xvalue和lvalue的相关知识,会用到部分intel式和ATT式汇编的知识。我会在文章末尾给出测试代码的反汇编代码以及右值引用(Rvalue references)官方文档 😃。 三五法则 三五法则:有析构就应该有拷贝构造函数和拷贝赋值运算法(3)。 c++11下,一个类还可以有移动构造函数和移动赋值运算符(3+2)。 三五法则时候一
2022-01-28
C++
使用tcpdump观察TCP头部信息和三次握手四次挥手

使用tcpdump观察TCP头部信息和三次握手四次挥手

前言 本次实验是目的在于弄清tcp头部信息和三次握手四次挥手的细节,并且补充一些tcp协议的常用知识。读本文需要一些前置知识,具体请参照《linux高性能服务器编程》p32-p37。 实验测试机是阿里云ECS服务器和本地虚拟机。不同于书本上,它的测试机是在同一局域网内。 实验开始   在服务器上将echo服务打开,具体请看笔者写的tcpdump观察ARP通信过程,这里不多赘述。
2021-07-25
Network
C++A星寻路的实现

C++A星寻路的实现

前言 本文主要讲的A星寻路的代码实现,对A星寻路有一定的了解后再来阅读本文是个不错的选择。 本文还用到了图形库,编译器为vs2019。图形库没有的可以去官方网站下载,步骤很简单下载直接安装即可。 A星寻路的流程 1.准备存储的路径和终点标志位。 2.将起点放入closeList 3.将起点周围的格子放入openlist 4.寻找最小和值F和终点 5.找到后将它存入closelist
2021-02-07
C++
C++深度优先和广度优先的实现

C++深度优先和广度优先的实现

前言 本文主要讲的深度优先算法和广度优先算法的区别,其中深度优先有两种实现方式,一种是递归法,另一种是非递归(栈实现),而广度优先就是队列的实现; 后面还会以图形表述栈实现和队列实现;且用到了图形库easyx; 源码如下: main.cpp 12345678910111213141516171819202122232425262728293031323334353637383940414
2021-01-27
C++
12

Search

Hexo Fluid
Views: Visitors: