在 C++ 中,当按值传递对象时,复制发生的时间是否有限制?
我有以下代码(简化):
class A;
class Parent
{
public:
void doSomething(std::auto_ptr<A> a); // meant to transfer ownership.
};
std::auto_ptr<A> a = ...;
a->getParent()->doSomething(a);
它的作用类似于:
std::auto_ptr<A> a = ...;
std::auto_ptr<A> copy(a);
a->getParent()->doSomething(copy);
这显然会出现段错误,因为a
现在正在引用NULL
.
而且不喜欢:
std::auto_ptr<A> a = ...;
Parent* p = a->getParent();
p->doSomething(a);
这是预期的吗?