1
#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);?
4

1 回答 1

4
boost::shared_ptr<A> ptrA(new A);

调用转换A*shared_ptr. 这是构造 ptr 的默认方式。

ptrA(new A); 

来电operator()。这有很多原因,一个是让对象模拟函数,即仿函数。但这不与shared_ptr.

构造函数存在,operator()不存在。

于 2013-06-27T03:16:16.430 回答