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

一、单独编译

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声明,首选将其作用域设置为局部而不是全局

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值