我试图弄清楚这段代码的输出,但是由于某种原因我无法输出,它给了我一个错误:“1 [main] Q1c 5752 open_stackdumpfile:将堆栈跟踪信息转储到Q1c.exe.stackdump”。
double *dp=new double(1.2);
auto_ptr <double> autodp1(dp);
auto_ptr <double> autodp2=autodp1;
cout<<*autodp1<<endl;
我只想知道它什至会打印出来。
注意:这个问题在过去的试卷中,仅供修订。
最佳答案
代码*autodp1
实际上是对空指针的取消引用。因此,该代码表现出未定义的行为。
首先,构造autodp1
指向新分配的double
。但是,然后autodp2
的构造函数自己获取拥有的内存,并将autodp1
设置为null。