第一个原因
请看一段使用auto_ptr的代码:
//使用auto_ptr不当的后果
int main()
{
auto_ptr<int> aptr1(new int);
auto_ptr<int> aptr2(new int);
*aptr1 = 3;
aptr2 = aptr1;
cout << *aptr2 << endl;
cout << *aptr1 << endl; //运行阶段错误,aptr1已移交控制权
cin.get();
}
aptr1将控制权移交给aptr2,然而编译阶段并不认为输出*aptr1是错误的