c++ - 可以调用 myfunc(make_shared(0)) 到接收weak_prt 的函数?
问题描述
我有一个需要 weak_ptr<> 的函数,我在函数中传递了我的 shared_ptr<> 。
#include <memory>
#include <iostream>
void takeweak(std::weak_ptr<int> wp) {
std::cout << wp.use_count() << std::endl; // prints 1
}
int main() {
takeweak(std::make_shared<int>());
return 0;
}
这是运气还是设计?
我是否有一个共享指针的副本存在于整个main()
作用域函数中?或者共享指针是否会存在于 body 的整个范围内takeweak()
(直到它的堆栈展开)?
这种行为是否可能会在新版本的编译器或语言标准中中断?
解决方案
推荐阅读
- python - 如何根据登录的用户状态连接三个不同的屏幕?
- protractor - 我怎样才能完全避免 webdriver-manager?
- python - conda 无法识别我的 virt env,而在两个 anaconda 版本 2 和 3 上有两个 virl env?
- c++ - C++ WINAPI 动态包装类
- c# - 没有发现这样的元素硒
- reactjs - 如何在 React 中将参数传递给 URL
- javascript - 使用 CSS 类或渲染状态变化来提高效率?
- ruby-on-rails - 如何在rails中截断和添加阅读更多内容
- node.js - Mustache 模板可以在 node.js 上运行,但不能在 Ruby 上运行
- linux - Linux 内核:为内核构建树外模块,但在 apt-cache 搜索中没有 linux-headers