内存模型3

一、说明符和限定符
(1)auto(C++11中不再是说明符):用于自动类型推断;
(2)register:用于在声明中指示寄存器存储;
(3)static:当用于作用域为整个文件的声明中时,表示内部链接性;被用于局部声明中,表示局部变量的存储持续性为静态的;
(4)extern:表明是引用声明,即声明引用在其他文件定义的变量;
(5)thread_local(C++11新增):指出变量的持续性和所属线程的持续性相同;
(6)mutable
二、mutable
用mutable来指出,即使结构或类变量为const,它的某个成员也可以被修改。
例如:

struct data
{
  char name[30];
  mutable int access;
};
const data v = { "James", 10 };
strcpy(name, "John");//not allowed
v.access++;//allowed

三、const
1、在默认情况在全局变量的链接性为外部,但是const全局变量的链接性为内部,即C++看来,全局const定义就像static说明符一样。

const int x = 10;//same as static const int x=10;
int main()
{
  cout << x << endl;
}

2、C++规定,将一组常量放在头文件中,并在同一个程序的多个文件中使用该头文件,则预处理器将头文件的内容包含到每个源文件中后,每个源文件都有类似下面的定义:

const int x=10

只要两个源代码文件包含同一个头文件,则它们将获得同一组常量。
3、如果希望某个常量的链接性为外部的,可以使用extern来覆盖默认的内部链接性:
extern const int x=10;
四、动态分配
使用C++运算符new(或C语言中的malloc())分配的内存称为动态内存;
使用new来分配内存,相应地,使用delete来释放new分配的内存。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值