c++ - “ 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# - 有效负载包含两个或多个具有相同目标路径“e_sqlite3.dll”的文件
- jquery - 更新失败,数据表中的数据点击保存按钮
- jquery - 如何过滤特定条件,获取所有非空列及其内容然后转置?
- reactjs - 如果我的 Fetch 成功,为什么会触发捕获?
- python - 根据字典更改熊猫数据框值
- c# - 如何防止 ID 增加并使用第一个可用的未使用 ID 代替?
- php - CodeIgniter 调用未定义的方法准备
- php - Laravel error Declaration of App\Exceptions\Handler::report(Throwable $exception)
- spring-boot - 在 Spring Boot 升级到 2.2 后,Spring 批处理作业没有被触发
- javascript - 在异步 foreach 中设置值始终返回 null