您的位置:首页 > 其它

9.内存模型和名称空间总结

2018-04-05 10:20 267 查看
一、单独编译
a,头文件: 包含结构声明和使用这些结构的函数的原型
b,源代码文件:包含与结构体有关的函数的代码
c.源代码文件:包含调用与结构相关的函数的代码
头文件中包含:函数原型,使用#define或const定义的符号常量,结构声明,类声明,模板声明,内联函数
1、在头文件中使用宏定义
2.自己定义的头文件要用include“GAO.h"包含
二、存储持续性、作用域、链接性
1、在默认情况下,在函数中声明的函数参数和变量的存储持续性为自动,作用域局部,没有链接性。
2、自动变量存放在栈中,先进后出
3、五种变量存储方式,见书310页表9.1
4、静态变量的外部链接性,要使用extern重新声明变量
5、定义与全局变量同名的局部变量后,局部变量将隐藏全局变量
6、用static定义一个外部变量,这个变量就只能在这一个文件中使用,无链接性;将static限定符用于在代码块中定义的变量,将导致局部变量的存储持续性为静态,该变量只可以在这个代码块中使用,但它在代码不活动时候仍然存在。
7、用mutable,即使结构或类变量为const,其某个成员也可以修改。
8、一个函数默认为自动静态,函数链接性为外部,可以在文件间共享。可以用static将函数链接性设置为内部的,只可以在一个文件中使用。
三、new 定位
1、常规申请空间:int *p=new int (5);
                           int *p1=new int[20];
2、定位申请空间:char buff[500];
                           chaff *p ;//结构体指针
                         int  *p2;
                        p = new(buff)chaff;
                       p2 = new(buff)int[3];
四、名称空间
1、namespace{    }定义
2、using 声明和using namespace 编译 : using声明将空间名称导入该区域,这两个名称会发生冲突;using编译指令将该名称空间导入声明区域,则局部版本将隐藏名称空间版本。尽量使用声明;
3、名称空间指导原则
使用在已经命名的名称空间中声明的变量,而不是使用外部全局变量
使用在已经命名的名称空间中声明的变量,而不是使用静态外部全局变量
如果开发一个函数库或类库,将其放在一个名称空间中
不要在头文件中使用using编译指令
导入名称是,首选使用作用域解析运算符或using声明的方法
对于using声明,首选将其作用域设置为局部而不是全局
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: