C++数据类型 变量初始化规则 类型转换 可变参数宏

2015-02-10 21:16:00
admin
原创 4796
摘要:C++数据类型 变量初始化规则 类型转换 可变参数宏

一、数据类型

1、int在16位机器上是16位,在32位和64位机器上是32位;

2、long和size_t在32位机器上是32位,在64位机器上的64位程序中是64位;

3、long long长度是64位;

4、使用stdint.h的类型定义,可以增强程序的移植性;

5、C++11引入关键字auto,可以自动推导变量类型;


二、变量初始化规则 (按作用域)

1、未初始化的局部变量分配在栈上面,初始值随机;

2、全局初始化的变量存储在.data区域,用户数据进行填充;

3、全局未初始化的变量存储在.bbs区域,程序启动时填充零;

4、静态全局变量和静态局部变量在全局区分配空间,符号名在编译时转义,只能在文件或函数内可见;


三、变量初始化规则 (按场景)

1、初始化列表中成员变量名和参数名可以重名,隐式加上this指针;

2、类成员默认访问权限private,结构体成员默认访问权限public;

3、拷贝构造函数用一个对象生成另一个新对象,默认拷贝构造函数拷贝全体成员,语法示例Demo(const Demo& demo);

4、拷贝赋值函数只是修改一些成员值,默认拷贝赋值函数拷贝全体成员,语法示例Demo& operator =(const Demo& demo);

5、常量引用可以引用常量和函数返回值,通过创建临时变量实现;


四、数组、结构体、枚举初始化

1、数组初始化未指定值的部分初始化为零,比如char arr[1024] = {};

2、结构体初始化未指定值的部分初始化为零,比如Value value = {1,2},value.v1=1,value.v2=2,value.v3=0;

3、枚举初始化默认从零开始;


五、类型转换

1、C++多继承:一个对象存在多个虚函数表,这样每个基类都能找到需要调用的函数

2、C++多继承:对象转换为基类,指针地址可能发生变化,指针指向对应基类的虚函数表;

3、T(expr),强制转换,等价于以下4种转换;
4、const_cast,增删const限定符;
5、static_cast,编译时类型检查;
6、dynamic_cast,运行时类型检查;
7、reinterpret_cast,不进行任何检查;


六、可变参数宏

1、使用...申明可变参数,使用__VA_ARGS__引用可变参数;

2、使用##__VA_ARGS__在可变参数为空时去除前导逗号;

发表评论
评论通过审核之后才会显示。