我想问一下,为什么第二句语句这么写是不可以的, 如果想要自己实现这样的类,来阻止=的构造函数该怎么做
shared_ptr<int> pint(new int(5));
shared_ptr<int> pins = new int(5);
阻止new的话,operator new( size_t t) =delete; 阻止=的话,operator =( )=delete;
http://zh.cppreference.com/w/cpp/memory/shared_ptr/shared_ptr
没有int*,所以不可以。第一行可以是存在隐式转换
现在已经了解到了, 其实是explicit的问题,
template< class Y >
explicit shared_ptr( Y* ptr );
下面的语句执行的时候,其实是相当于share_ptr pins = share_ptr(new int(5)), 由于构造函数是explicit的,所以无法执行隐式转化。