摘要:
1、什么是字节对齐 在用sizeof运算符求算某结构体所占空间时,并不是简单地将结构体中所有元素各自占的空间相加,这里涉及到内存字节对齐的问题。从理论上讲,对于任何变量的访问都可以从任何地址开始访问,但实际上访问特定类型的变量只能在特定的地址访问,这就需要各个变量在空间上按一定的规则排列, 而不是简 阅读全文
摘要:
1、关键字语义 1、用const修饰的对象,只能访问该类中用const修饰的成员函数,而其它的成员函数是不能访问的。用volatile修饰的对象,只能访问该类中用volatile修饰的成员函数,不能访问其它的成员函数。 当希望成员函数只能引用成员数据的值,而不允许成员函数修改数据成员的值时,可用关键 阅读全文
摘要:
转自 一, auto 1, auto的作用 一般来说, 在把一个表达式或者函数的返回值赋给一个对象的时候, 我们必须要知道这个表达式的返回类型, 但是有的时候我们很难或者无法知道这个表达式或者函数的返回类型.(特别在模板中) 这个时候, 我们就可以使用auto关键字来让编译器帮助我们分析表达式或者函 阅读全文
摘要:
C++关键字 static、extern、inline 单独的含义和用法都不难,但组合起来的含义常常比较含糊,本文主要分析 static inline 和 extern inline。引用 Linux 之父 linus 的原话: "static inline" means "we have to h 阅读全文
摘要:
1、new与malloc来源 malloc与free是C++/C语言的标准库函数,new/delete是C++的运算符。它们都可用于申请动态内存和释放内存。 Q:那么已经有了malloc和free,为什么还需要new和delete? A:这是因为对于非内部数据类型的对象而言,maloc/free无法 阅读全文
摘要:
volatile,词典上的解释为:易失的;易变的;易挥发的。C++使用关键词volatile,有三个特性:易变性、不可优化性、顺序性。下文将详细分析,先看下 BS 在 "The C++ Programming Language" 对 volatile 修饰词的说明: "A volatile spec 阅读全文
摘要:
1、explicit含义 C++中 explicit 被用来修饰只有一个参数的构造函数,作用是调用该构造函数必须是显示的(且要求只能放在函数声明处), 跟它相对应的单词是 implicit(隐含的、不言明的), 类构造函数默认情况下即声明为 implicit (因此C++没有此关键字)。 如果不使用 阅读全文
摘要:
0、算法概述 0.1 算法分类 十种常见排序算法可以分为两大类: 非线性时间比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此称为非线性时间比较类排序。 线性时间非比较类排序:不通过比较来决定元素间的相对次序,它可以突破基于比较排序的时间下界,以线性时间运行, 阅读全文
摘要:
1、C++进程内存分布 在C/C++程序进程内存分为:代码区、静态区、常量区、堆区、栈区,不同区域存放不同内容: 内存区|存放内容|说明 | | 代码区|二进制代码|CPU可执行的机器指令,且是只读的 静态区|全局和静态变量|包括局部静态变量 常量区|程序在运行的期间不能够被改变的量|例如: 全局c 阅读全文
摘要:
1、头文件和源文件应该写什么 头文件和源文件写什么,原则取决于C++编译机制,C++语言以"xxx.cpp"为单位进行编译生成 xxx.obj, 然后目标文件链接生成 xxx.exe (windows),类似 xxx.h 文件是不参与编译,头文件主要通过 include 宏,将头内容复制到源文件。所 阅读全文