一、从C到C++(一)bool类型、const限定符、结构体内存对齐、重载、默认值形参
来源:互联网 发布:霸气的句子 知乎 编辑:程序博客网 时间:2024/06/09 18:32
一、 bool类型
取值为true或者false,可以当做整数用,在不用编译器实现不同。
二、 const限定符
(1)、用const给字面常量起个名字(标识符),这个标识符就称为标识符常量,const修饰的标示符常量必须在定义的时候必须初始化,而且初始化之后不能再重新赋值。
(2)、const和define的比较
#define STR(a) #a <==> STR(ABC) = “ABC”//把参数转化为字符串#define CAT(a,b) a##b CAT(a,b) = ab//连接两个字符串,根据这个字符串可以定义变量
(5)、C和C++ const之比较
那么C语言和C++的const有什么不同呢,C语言中const变量是只读变量,有自己的存储空间,其值在运行的时候初始化。
C++中的const常量可能分配存储空间,也可能不分配存储空间,C++在编译的时候碰见常量声明时,在符号表中放入这个常量,若发现使用此const常量则直接以符号表中的值替换,编译过程中若发现对const使用了extern或者&操作符,则给对应的常量分配存储空间。也就是以下两种情况才会给const常量分配空间:
- 对const常量取地址的时候
- const常量为全局变量,需要在其他文件使用的时候
三、内存对齐
为了寻址方便,编译器为每个“数据单元”按排在某个合适的位置上,这就是内存对其。C、C++语言非常灵活,它允许你干涉“内存对齐”
(1)、如何对齐
a)第一个数据成员放在offset为0的位置
b)其它成员对齐至min(sizeof(member),#pragma pack所指定的值)的整数倍。
c)整个结构体也要对齐,结构体总大小对齐至各个成员中最大对齐数的整数倍。
d)#pragma pack(n) 来修改,#pragma pack() 取消修改
四、C++增加的运算符
(1)、::域运算符,作用:类访问自己的成员,访问重名的全局变量
(2)、new,delete运算符用于分配和释放堆空间,例子:
int*p = new int(5);delete p; int *p2 = new int[10];delete[] p2;//释放数组空间一定要加[]</span>
new,delete用于对象上:
new一个新对象,内存分配(operator new)调用构造函数
五、重载,name managling 和extern “C”
(1)、重载
(2)、name managling
C++为了支持重载,需要进行name managling,extern “C”实现C与C++混合编程,如下:
#ifdef __cpluscplusextern “C”{#endif...//函数声明#ifdef __cpluscplus}#endif(3)、带默认值的形参
函数声明或者定义的时候,可以给形参赋一些默认值。调用函数时,若没有给出实参,则按指定的默认值进行工作
函数没有声明时,在函数定义中指定形参的默认值
函数既有定义又有声明时,声明时指定后,定义后就不能再指定默认值
重载的函数使用默认值,可能会产生二义性。
- 一、从C到C++(一)bool类型、const限定符、结构体内存对齐、重载、默认值形参
- 【从C到C++学习笔记】bool类型/const限定符/#define//结构体对齐
- c++-结构体内存对齐
- C结构体内存对齐
- C结构体内存对齐
- 跟我一起学C++之从C到C++(结构体内存对齐)
- C 结构体内存对齐原则
- C/C++结构体内存对齐
- C语言中的结构体内存对齐
- C 结构体内存对齐原则
- C/C++结构体内存对齐
- C/C++结构体内存对齐
- C语言结构体内存对齐问题
- C语言结构体内存对齐
- C语言之结构体内存对齐
- C语言结构体内存对齐问题
- C语言结构体内存对齐法则
- c语言结构体内存对齐
- erlang战斗系统设计
- HorizontalScrollView实现侧滑菜单
- 黑马程序员———反射
- 【LeetCode】Triangle
- EL表达式原理
- 一、从C到C++(一)bool类型、const限定符、结构体内存对齐、重载、默认值形参
- Python 字符串 转换 整数 浮点数 数字
- Flash builder 编译参数
- 元胞数组的用法
- 黑马程序员———动态类
- Android xml文件解析——14
- ServletConfig对象
- 加秘友营销公告推广【12月1日更新】
- [STL] vector出题