【发布时间】:2020-09-14 01:57:56
【问题描述】:
unique_ptr<Sample> sp1(new Sample);unique_ptr<Sample> sp1(new Sample());和unique_ptr<Sample> sp2(new Sample{});有什么区别?我发现它们确实都是合法的。你可以在http://cpp.sh/3icui查看。
我是 C++ 的新手。我反复思考,但仍然能得到这个想法。我会感谢你对这个问题的任何提示。
#include <iostream>
#include <vector>
#include <memory>
#include <cstdio>
#include <fstream>
#include <cassert>
#include <functional>
using namespace std;
class Sample {
public:
Sample() { cout << "Sample Constuctor" << endl; }
~Sample() { cout << "Sample Destructor" << endl; }
void publicFn() { cout << "This is public function of class" << endl; }
};
int main() {
unique_ptr<Sample> sp1(new Sample{});
unique_ptr<Sample> sp2(new Sample());
unique_ptr<Sample> sp3(new Sample);
sp1->publicFn();
sp2->publicFn();
return 0;
}
【问题讨论】:
-
在您的问题中您说的是
new Sample[],但在您的代码中似乎是new Sample(),哪个是正确的? -
@songyuanyao 后一个是对的,打扰了,我已经修改了。
-
我现在就可以看到。谢谢。
标签: c++ c++11 initialization unique-ptr