美文网首页
C++原生指针,引用与智能指针

C++原生指针,引用与智能指针

作者: Hubhub | 来源:发表于2020-03-23 12:08 被阅读0次

    Ref

    原生指针

    c++原生指针来源于c语言,常与取地址运算符&搭配使用,基本操作有修改指针指向,解引用操作。常用于获取动态内存分配得到的地址、减少数据拷贝操作(如函数传参)等。

    int a=5,b=7;
    int *p=&a;//取地址
    *p=15; //解引用
    p=&b;
    *p=17;
    

    引用

    引用是c++有而c没有的语法,引用在语义上是等价于被引用对象,对引用的操作即是对被引用对象内存的操作。引用在底层是指针,但是在行为上与指针不同而与被引用对象相同。如下例:

    int a=7,b=8;
    int &ref=a;
    ref=10;
    int *pb=&b;
    int vc[5]={0,1,2,3,4};
    int *pc=vc;//指向vc[0]
    int &rc=vc;//指向vc[0]
    pc++;//pc指向下vc[1]
    rc++;//rc仍指向vc[0],++操作修改的是被指对象的值。vc[0]变为1;
    

    引用的独特之处在于,引用被定义后,不可更改所指(其行为与被引用对象相同,没有此操作)。

    智能指针

    智能指针是c++2.0的新特性之一,其最大的特点在于其结合了指针和对象构造析构的优点RAII,使得其在其生存期结束时可以及时释放其所管理的资源(动态内存分配得到的资源)。常用智能指针有unique_ptr<T>、shared_ptr<T>和weak_ptr<T>。

    相关文章

      网友评论

          本文标题:C++原生指针,引用与智能指针

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