std::make_shared 智能指针的多态调用
时间: 2023-11-16 09:17:41 浏览: 266
LeetCode:痛定思痛,一定要坚持刷题啊!:face_with_steam_from_nose::face_with_steam_from_nose::face_with_steam_from_nose:
对于智能指针的多态调用,可以使用`std::shared_ptr`配合虚函数实现多态性。`std::shared_ptr`是C++标准库中提供的智能指针类型,用于管理动态分配的对象。而多态性则是通过虚函数和继承来实现的。
首先,创建一个基类,其中包含一个纯虚函数:
```cpp
class Base {
public:
virtual void foo() const = 0;
};
```
然后,创建派生类,实现基类的纯虚函数:
```cpp
class Derived : public Base {
public:
void foo() const override {
std::cout << "Derived::foo()" << std::endl;
}
};
```
接下来,使用`std::make_shared`创建智能指针,并进行多态调用:
```cpp
std::shared_ptr<Base> ptr = std::make_shared<Derived>();
ptr->foo(); // 多态调用,输出 "Derived::foo()"
```
在上述代码中,`std::make_shared<Derived>()`会返回一个指向`Derived`对象的`std::shared_ptr`智能指针。然后,将该智能指针赋值给类型为`std::shared_ptr<Base>`的指针`ptr`。由于派生类`Derived`公开继承了基类`Base`并实现了基类的纯虚函数,所以可以通过`ptr->foo()`进行多态调用,并输出派生类的实现结果。
这样,就可以利用`std::make_shared`智能指针的多态调用了。
阅读全文