小吴同学
善良比聪明更重要
C++ 对象模型:内存布局详解 C++ 对象模型:内存布局详解
前言这篇文章希望对 C++ 对象的内存布局、虚表指针、虚基类指针等有深入介绍。 何为 C++ 对象模型引用《深度探索 C++ 对象模型》这本书中的话:有两个概念可以解释 C++ 对象模型: 语言中直接支持面向对象程序设计的部分。 对于各种
2019-10-31
C++ 右值引用 C++ 右值引用
概述右值引用的概念有些读者可能会感到陌生,其实它和 C++98/03 中的左值引用有些类似,例如,C++98/03 中的左值引用是这样的: int i = 0; int& j = i; 这里的 int& 是对左值进行绑定,但
2019-10-17
整型变量赋值是原子操作吗? 整型变量赋值是原子操作吗?
那么为什么整型变量的操作不是原子性的呢?常见的整型变量操作有如下几种情况:给整型变量赋值一个确定的值,如 int a = 1; 这条指令操作一般是原子的,因为对应着一条计算机指令,CPU 将立即数 1 搬运到变量 a 的内存地址中即可,汇编
2019-10-03
undefined symbol 排查:ldd、nm、c++filt undefined symbol 排查:ldd、nm、c++filt
最近发版本,灰度发布的时候,发现进程没起来,回包自然是异常的。立即进行版本回退,发现 OK。 哪里出问题了呢?直接 ldd -r libtest.so 一下,就知道了,原来是缺符号。看看简化后的示例代码: #include <iost
2019-09-19
C++ 静态库与动态库 C++ 静态库与动态库
这篇文章的目的是介绍如何使用静态库、动态库,知道静态库与动态库的区别。这里不深入介绍静态库、动态库的底层格式,内存布局等,有兴趣的同学,推荐一本书《程序员的自我修养——链接、装载与库》。库是写好的现有的,成熟的,可以复用的代码。本质上来说库
2019-09-05
C++ 基础面试题精选 C++ 基础面试题精选
char c = '\72'; 中的 \72 代表一个字符,72 是八进制数,代表 ASCII 码字符 :。 10*a++ 中 a 先进行乘法运算再自增。 const 和 static 的作用 static 关键字: 1
2019-08-22
C++ 流缓冲区 C++ 流缓冲区
C++ 的 I/O 是通过标准库中输入输出流来实现的。标准库在 iostream 头文件当中,预定义了六个流对象,它们是: * istream > class basic_ios; // : public ios_base 由于 std
2019-08-08
C++ 语言链接:extern C++ 语言链接:extern "C"
提供以不同程序语言编写的模块间的连接。 extern 字符串字面量 { 声明序列(可选) } (1) extern 字符串字面量 声明 (2) 1) 将语言说明字符串字面量应用到声明于声明序列中的所有函数类型,具有外部连接的
2019-07-25
Lambda 表达式的捕获列表 Lambda 表达式的捕获列表
捕获值列表,是 Lambda 表达式的函数体中直接使用这些值的含义,捕获值列表能捕获的值是所有在此作用域可以访问的值,包括这个作用域里面的临时变量、类的可访问成员、全局变量。捕获值的方式分两种,一种是按值捕获,一种是按引用捕获。顾名思义,按
2019-07-11
std::ref 的作用 std::ref 的作用
C++ 本身有引用 &,为什么 C++11 又引入了 std::ref?主要是考虑函数式编程如 std::bind 在使用时,是对参数直接拷贝,而不是引用。如下例子: void f(int& n1, int& n2,
2019-06-27
C++ const 与 mutable C++ const 与 mutable
const:常量,不变的 mutable:易变的。从意思上理解,可见 const 和 mutable 是一对反义词,它们都是 C++的关键字。const 成员函数不能修改调用它的对象。类的成员函数可以被声明为 const,这将使得函数的隐式
2019-06-13
C++ friend 友元 C++ friend 友元
原则上,类的私有和受保护成员不能从声明它们的同一类外部访问。但是,此规则不适用于友元friends。以 friend关键字修饰的函数或类称为友元函数或友元类。 友元函数友元函数是可以直接访问类的私有成员的非成员函数。它是定义在类外的普通函数
2019-05-30
7 / 10