智能指针小例子

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

#include
#include
using namespace std;

class Test{
    public:
        Test(string s){
            str = s;
            cout<<"Test creat\n";
        }
        ~Test(){
            cout<<"Test delete:"<
  • unique_ptr 自动执行析构
int main(){
    unique_ptr p(new Test("123"));
    cout<<"done !\n";
    return 0;
}
Test creat
done !
Test delete:123
  • shared_ptr 两种创建方式
int main(){
    shared_ptr ptest = make_shared("123");
    shared_ptr ptest2 = make_shared("456");
    cout<<"done !\n";
    return 0;
}
Test creat
Test creat
done !
Test delete:456
Test delete:123
int main(){
    shared_ptr ptest(new Test("123"));
    shared_ptr 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 ptest(new Test("123"));
    shared_ptr ptest2(new Test("456"));

    cout<getStr()<print();
    cout<
  • 参考
    gcc/g++ 如何支持c11 / c++11标准编译

你可能感兴趣的:(智能指针小例子)