美文网首页
智能指针小例子

智能指针小例子

作者: cb_guo | 来源:发表于2019-04-24 21:51 被阅读0次

智能指针是放在 memory 头文件中的
比如文件名为 test.cpp。则需要 C++11 标准编译
g++ -std=c++11 test.cpp -o aa
-o aa 指定可执行文件为 aa

#include<iostream>
#include<memory>
using namespace std;

class Test{
    public:
        Test(string s){
            str = s;
            cout<<"Test creat\n";
        }
        ~Test(){
            cout<<"Test delete:"<<str<<endl;
        }
        string& getStr(){
            return str;
        }
        void setStr(string s){
            str = s;
        }
        void print(){
            cout<<str<<endl;
        }
    private:
        string str;
};
  • unique_ptr 自动执行析构
int main(){
    unique_ptr<Test> p(new Test("123"));
    cout<<"done !\n";
    return 0;
}
Test creat
done !
Test delete:123
  • shared_ptr 两种创建方式
int main(){
    shared_ptr<Test> ptest = make_shared<Test>("123");
    shared_ptr<Test> ptest2 = make_shared<Test>("456");
    cout<<"done !\n";
    return 0;
}
Test creat
Test creat
done !
Test delete:456
Test delete:123
int main(){
    shared_ptr<Test> ptest(new Test("123"));
    shared_ptr<Test> ptest2(new Test("456"));
    cout<<"done !\n";
    return 0;
}
Test creat
Test creat
done !
Test delete:456
Test delete:123
  • shared_ptr 小例子
int main(){
    shared_ptr<Test> ptest(new Test("123"));
    shared_ptr<Test> ptest2(new Test("456"));

    cout<<ptest2->getStr()<<endl;
    cout<<ptest2.use_count()<<endl;
    ptest = ptest2;       //"456"引用次数加1,“123”销毁
    ptest->print();
    cout<<ptest2.use_count()<<endl;    //2
    cout<<ptest.use_count()<<endl;   //2
    ptest.reset();
    ptest2.reset();   //此时“456”销毁
    cout<<"done !\n";
    return 0;
}
Test creat
Test creat
456
1
Test delete:123
456
2
2
Test delete:456
done !

相关文章

  • 智能指针小例子

    智能指针是放在 memory 头文件中的比如文件名为 test.cpp。则需要 C++11 标准编译g++ -st...

  • C 指针区分

    看下如下各种的区别: 数组指针例子: 指针数组: 查找字符串的例子: 数组名字相当于指针: 函数指针: 回调小例子:

  • C++ 智能指针

    下面是一个智能指针使用的例子(以下的内容仅仅针对std::shared_ptr这一个智能指针) 先说几个问题,sh...

  • C++智能指针

    在下面的例子中,当异常抛出时,Resource没有被回收,出现指针泄漏 在说智能指针之前,不得不说RAII(Res...

  • 目录

    智能指针(1) 智能指针(2) 智能指针(3) 智能指针之使用 容器 - vector(1) 容器 - vecto...

  • c++ 标准中的弱引用

    一 弱指针使用 先看一个例子,没有弱智指针的情况下的嵌套引用 结果是,在嵌套引用的情况下,无法通过智能指针进行回收...

  • 智能指针到Android引用计数

    智能指针 LightRefBase RefBaseStrongPointerWeakPointer 智能指针 这是...

  • C++面试重点再梳理

    智能指针 请讲一下智能指针原理,并实现一个简单的智能指针 智能指针其实不是一个指针。它是一个用来帮助我们管理指针的...

  • C++研发工程师笔试题/面试题(1-10)

    1. (1) 简述智能指针的原理;(2)c++中常用的智能指针有哪些?(3)实现一个简单的智能指针。 简述智能指针...

  • 第十六章 string类和标准模板库(2)智能指针模板类

    (二)智能指针模板类 智能指针是行为类似指针的类对象,但这种对象还有其他便于管理内存的功能。 1.使用智能指针 (...

网友评论

      本文标题:智能指针小例子

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