【发布时间】:2011-04-05 01:31:38
【问题描述】:
我可以访问一个空的 shared_ptr 对象的成员函数:
#include <memory>
#include <iostream>
class A
{
public:
int getNum() {return 1234;}
};
int main()
{
std::shared_ptr<A> pA(nullptr);
std::cout << pA->getNum() << std::endl;
}
在我期待异常时返回 1234。同样的结果发生在
std::shared_ptr<A> pA();
或
std::shared_ptr<A> pA();
pA.reset();
这真的是预期的行为吗? 如果是在成员函数调用的情况下引发异常的 corect shared_ptr 定义是什么?
使用 VS2010。
【问题讨论】:
标签: c++ c++11 shared-ptr tr1