#include "boost\shared_ptr.hpp"
class A{
public:
A(){}
~A(){}
};
int main()
{
boost::shared_ptr<A> ptrA;
ptrA(new A);
}
我想知道为什么这段代码不能编译?如果我只是使用
,我想知道区别boost::shared_ptr<A> ptrA(new A);?
答案 0 :(得分:3)
boost::shared_ptr<A> ptrA(new A);
调用转换构造函数,将A*
转换为shared_ptr
。这是构造ptr的默认方式。
ptrA(new A);
致电operator()
。这有很多原因,一个是使对象模拟函数,即仿函数。但这不适用于shared_ptr
。
构造函数存在,operator()
不存在。