学习使用C++——make_shared函数 make_shared也是在内存中分配空间,构造一个对象,也会调用构造函数。 优点: 提高性能,异常安全(暂时没看懂,目前就知道怎么用)
我的错误认知的纠正: 1.我竟然写出 shared_ptr<A> objA1 = new A(1,2); 这样的语句,等号左右的类型不匹配,等号左边是一个模板类,等号右边是一个指针,显然不能进行这样的初始化语句。 2. shared_ptr<A> objA3 = shared_ptr<A>(new A(1,2)); 等号右边应该可以理解为类名+括号,则进行实例化吧,实例化了一个智能指针对象。 3. shared_ptr<A> objA4(shared_ptr<A>(new A(1,2))); 这块是使用智能指针对象去构造智能指针对象objA4,调用的是拷贝构造函数。
#include<iostream>
#include<cstdlib>
#include<memory>
using namespace std;
class A{
public:
A(int a,int b):m_a(a),m_b(b){
cout<<"constructor"<<endl;
};
private:
int m_a;
int m_b;
};
int main(){
shared_ptr<A> objA2 = make_shared<A>(3,4);
shared_ptr<A> objA3 = shared_ptr<A>(new A(1,2));
shared_ptr<A> objA4(shared_ptr<A>(new A(1,2)));
}
程序的运行结果: constructor constructor constructor
|