c++ primer plus阅读笔记10---定位new using namespace

来源:互联网 发布:阿里云服务器登陆账号 编辑:程序博客网 时间:2024/09/21 06:37

定位new运算符
通常,new运算符负责在堆中找到一个能够满足要求的内存块,但是定位运算符能让程序员指定需要使用的未知,可以被用来设置器内存管理,处理等需要堆特定内存地址处理的情况。使用定位new运算符时候要包含new头文件,用法举例:

struct chaff{    char dross[20];    int slag;};char buffer1[50];char buffer2[100];int main(){    chaff *p1,*p2,*p3,*p4;    p1=new chaff;  //常规new运算    p2=new (buffer1)chaff;  //在buffer1的空间中申请内存,这个内存不在堆上,无法使用delete释放    ...    p3=new (buffer1)chaff;  //这个继续从buffer1的起始地址申请,会覆盖p2    ...    p4=new (buffer1+0x50)chaff //将会从buffer1起始地址偏移50的地方开始申请}

namespace关键字
namespace 用来创建命名空间,例如:

namespace Jack{    double pail;    void fetch();    int pal}//使用这个命名空间中定义的变量时:Jack::pail=12.34;Jack::pal=10;

using声明和using编译 //p327
我们并不希望每次使用名称时都对它进行限定(std::cout),因此可以使用using声明和using 编译。using 声明使特定的标识符可用,using编译使整个名称空间可用
using声明:

int main(){    using Jack pail; //将pail变量添加到main的作用域中,可以覆盖全局变量}

using 编译

//最常见的编译指令:using namespace std;//在全局声明区域中使用using,则将该命名空间应用到全局,使用时候不需要对其使用域解析运算符 :://在函数中使用using,则使其中的名称在该函数中有效int main(){    using namespace jack;}