C++笔记(四)

来源:互联网 发布:weka中的数据预处理 编辑:程序博客网 时间:2024/06/05 03:04

(1) union(共用体)对内存要求特别严格的地方,union会频繁出现,在union中,各成员共享一段内存空间

     一个union变量的长度等于各成员中最长的长度。

     共享:指该共用体变量可被赋予任一成员值,但每次只能赋一种值,赋入新值则冲去旧值。

     anonymous union(匿名共用体):共用体没有任何类型和变量名。

void main() {union {int i;float j;}i = 12;j = 1.22f;}

(2) default arguments (C不支持)
     ①默认参数只可在函数声明中设定一次
     ②如果一个参数设定了缺省值时,其右边的参数都要有缺省值
     ③默认值可以是全局变量、全局常量、函数,但不能是一个局部变量

(3) placeholder argument(占位符参数) C不支持
     ⓵占位符参数调用必须为占位符提供一个值
     ⓶占位符参数目的是可以修改函数定义而不需要修改所有的函数调用
     ⓷当含占位符参数函数作为接口时,后期使用此占位符,接口不变


(4) magic number

     float radius = 3.0f; float perimeter = radius*3.14;

     没有特别说明3.14这个数字很魔幻,导致代码可读性差,修改不方便。

     应该将其定义为常量、枚举类型或宏定义,不要在代码中直接使用特定的数值。

     特定情况下,可用于观察和调用程序中出现的错误。0xcdcd是微软C++ Debug运行库为没有初始化的堆内存所做的标记;0xcccc是为未初始化的栈内存所做的标记。


(5) Aggregate(聚合体)

     ⓵最大的特点是可以直接使用{}括起来的初始化列表进行初始化,不能有用户自定义的构造函数,不能有private和protected权限,不能有基类和虚函数。

     ⓶未知大小的数组可以用包含n个元素的初始化列表初始化。例如:int x[] = {1, 2, 3};

     ⓷结构的Aggregate中如果包含静态成员变量,在初始化列表中不考虑该变量。

struct A {int i;static int s;int j;} a = {1, 2};//这里初始化的是a.i和a.j

     ⓸初始化列表中的元素的个数少于Aggregate成员的个数,未明确指出的Aggregate成员将被默认初始化。

     ⓹出事化列表可以初始化union,但只能初始化其第一个元素。

原创粉丝点击