我试图找出这段代码打印的内容,但由于某种原因我无法输出它,它给了我一个错误:“1 [main] Q1c 5752 open_stackdumpfile: Dumping stack trace to 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。
关于c++ - C++ 中的自动指针 (auto_ptr),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23481778/