1.概要
c++新特性 智能指针实验
2.实验
2.1 共同代码
#pragma once
class A
{
public:A();~A();void fun();int a = 5;
};
#include "A.h"
#include <iostream>A::A() {std::cout << "structure\n";
}
A::~A() {std::cout << "destruct\n";
}
void A::fun() {std::cout << "my fun a:"<<a<<"\n";
}
2.2 普通指针
2.2.1 代码
#include <iostream>
#include "A.h"
#include <thread>
#include <memory>int main()
{A* p_a = new A();A* p_a_1 = p_a;p_a_1->fun();delete p_a;try{p_a_1->fun();}catch (const std::exception&){std::cout << "p_a_1 It's already deconstructed\n";}std::cout << "Hello World!\n";
}
2.2.2 执行结果
structure
my fun a:5
destruct
my fun a:-572662307
Hello World!
2.3 智能指针
2.3.1 代码
#include <iostream>
#include "A.h"
#include <thread>
#include <memory>
int main()
{std::shared_ptr<A> p_a(new A());std::shared_ptr<A> p_a_1 = p_a;p_a_1->fun();p_a.reset();try{p_a_1->fun();}catch (const std::exception&){std::cout << "p_a_1 It's already deconstructed\n";}std::cout << "Hello World!\n";
}
2.3.2.执行结果
structure
my fun a:5
my fun a:5
Hello World!
destruct