标签: C++

27 篇文章

C++虚函数表底层结构
C++虚函数表底层结构 C++ 通过虚函数指针和虚函数表实现多态,但是具体底层是如何实现的呢。可以通过下面这个例子来分析 #include <iostream> using namespace std; class base{ virtual vo…
C++ 友元
C++ 友元 在C++中,友元(Friend)功能是一个重要的特性,它允许一个类或函数访问另一个类的私有(private)和保护(protected)成员。使用友元特性可以提高程序的灵活性,但同时也要小心管理,因为它破坏了类的封装性。 友元函数 友元类 友元成…
关于TCP粘包问题
关于TCP粘包 首先,TCP(传输控制协议)没有粘包问题,但是为什么总是有人喜欢问如何解决TCP粘包分包问题呢?实际上问这个问题是在问如何设计一种应用层协议(TCP/IP四层模型),来解决使用TCP协议时,数据在经过多个中转节点后导致在目的地出现包合并或者拆分…
c++ 基本语法(1)
define - undef #define 和 #undef 是 C++ 中的预处理指令,用于定义和取消定义宏。 #define: #define 用于定义宏,宏是一种简单的文本替换机制,在预处理阶段将宏名称替换为对应的文本内容。 宏的一般格式为 #defi…
linux网络编程 – 五种IO模型
IO模型大体分为如下五种: 阻塞IO模型 非阻塞IO模型 IO多路复用模型 信号驱动IO模型 异步IO模型 阻塞IO模型 在阻塞IO模式下,当应用程序发起IO操作(比如读取文件或者网络通信),如果数据没有准备好或者无法立即处理,IO操作会阻塞当前线程或进程,直…
C++ socket 编程及多线程编程,聊天室实现
注:本文默认读者学过计网、操作系统、数据结构等知识 关于socket ​ 学过计网的应该知道TCP、UDP等协议,如果我们手写这些协议的话,会非常麻烦,因此有socket,socket介于应用层与传输层之间,socket一组接口,为程序员提供了方便,如下图: …
C++ 扩展数据结构
堆 在计算机科学中,堆是一种专门的基于树的数据结构,它本质上是一个完全二叉树,可以使用链式结构的树来实现,但是由于堆一定是完全二叉树,通常使用数组来实现。 将根结点最大的堆叫做最大堆或大根堆,根结点最小的堆叫做最小堆或小根堆。我们统称为堆序性。 常见的堆有二叉…
thumbnail
C++ STL介绍和底层原理讲解
STL简介 长久以来,软件界一直希望建立一种可重复利用的东西 C++的面向对象和泛型编程思想,目的就是复用性的提升 大多情况下,数据结构和算法都未能有一套标准导致被迫从事大量重复工作 为了建立数据结构和算法的一套标准,诞生了STL c++的三种特性:封装,继承…
C和C++编译的四个阶段
常规操作 我们通常使用gcc/g++编译c/cpp文件,通常是使用如下一行代码 g++ -o 可执行文件.exe 源文件.cpp 但实际上这一行代码中省略了很多步骤,事实上,在编译的过程中还有很多步骤 编译中间过程 源代码通过编译器生成目标代码,目标代码通过链…