美文网首页
第九章 内存模型和命名空间

第九章 内存模型和命名空间

作者: 鬼枭嗜 | 来源:发表于2019-03-03 18:03 被阅读0次

    #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数组。

    名称空间

    名称空间可以是全局的,也可以是位于另一个名称空间中,但不能位于代码块中。

    ::可传递 同时要注意二义性。

    未命名的名称空间 提供了链接性为内部的静态变量的替代品。

    (完)

    相关文章

      网友评论

          本文标题:第九章 内存模型和命名空间

          本文链接:https://www.haomeiwen.com/subject/ahlkeqtx.html