首页 > 解决方案 > “ std::shared_ptr 的类型是否有一些特殊用法?“?还是滥用共享指针?

问题描述

我理解std::shared_ptr<int>std::shared_ptr<someClass>等等。我void也理解。但是当我std::shared_ptr<void>最近看到这样的声明(即)时,我感到很困惑。这是对共享指针的滥用吗?或者它有什么特殊用途?

也许是为了隐藏某些东西的真实类型(我同意@user4581301)。我的意思是隐藏实现。我想我是对的。但是我以前没有见过这样的代码片段。所以我发布了这个问题,希望能证实我的猜测。

我看到的代码片段是这样的(已经简化,检查cpp.sh/967f4z):

#include <memory>
#include <iostream>

int main()
{
    std::shared_ptr<void> p = std::make_shared<int>(5);
    std::cout << *(std::static_pointer_cast<std::shared_ptr<int>>(p)) << std::endl;
}

标签: c++smart-pointers

解决方案


推荐阅读