我有一个基类及其子类:
class Base {
public:
virtual void hi() {
cout << "hi" << endl;
}
};
class Derived : public Base {
public:
void hi() override {
cout << "derived hi" << endl;
}
};
Run Code Online (Sandbox Code Playgroud)
尝试创建一个辅助函数,该函数创建Derived对象的唯一指针.
1)这个工作:
std::unique_ptr<Base> GetDerived() {
return std::make_unique<Derived>();
}
Run Code Online (Sandbox Code Playgroud)
2)但是,这个无法编译:
std::unique_ptr<Base> GetDerived2() {
auto a = std::make_unique<Derived>();
return a;
}
Run Code Online (Sandbox Code Playgroud)
3)std :: move作品:
std::unique_ptr<Base> GetDerived3() {
auto a = std::make_unique<Derived>();
return std::move(a);
}
Run Code Online (Sandbox Code Playgroud)
4)如果我创建一个Base实例,两者都有效:
std::unique_ptr<Base> GetDerived4() {
auto a = std::make_unique<Base>();
return a;
}
std::unique_ptr<Base> GetDerived5() …Run Code Online (Sandbox Code Playgroud)