#ifndef和#endif
自动化储存持续性
静态储存持续性
线性储存持续性
动态储存持续性
作用域和链接
如果要为内置的标量类型(例如 int double)分配储存空间并初始化,可在类型名后面加上初始值,并将其用括号括起。
int *pt=new int (6);//将6赋给*pt
这种括号语法也可适用于有合适构造函数的类。然而,要初始化常规结构或数组,需要时有大括号的列表初始化,这要求支持C++11
struct where { double x;double y; double z;}
where *x=new where{3.3,3.3,3.3};
C++11中,还可将列表初始化用于单值变量。
new失败时将引发异常std::bad_alloc。
int *pi=new int;
可以用 int *pt=new(sizeof(int));替代。 如果是数组 则在new()中加入数乘。 delete同理。
定位new运算符。
struct chaff{ char dross[20]; int slag;}
char buffer1[30];
char buffer2[500];
char *p1=new(butter1) chaff
char *p2=new(butter2) int[20]
上述代码从buffer1中分配空间给结构chaff,从buffer2中分配空间给一个包含20个元素的int数组。
名称空间
名称空间可以是全局的,也可以是位于另一个名称空间中,但不能位于代码块中。
::可传递 同时要注意二义性。
未命名的名称空间 提供了链接性为内部的静态变量的替代品。
(完)
网友评论