为什么std::shared_ptr在赋值给另一个点时不表现得像原始点
Why does std::shared_ptr not behave like raw point when assign to another?
#include <iostream>
#include <memory>
int main () {
std::shared_ptr<int> foo;
std::shared_ptr<int> bar (new int(10));
foo = bar;
bar.reset(new int(20));
std::cout << "*foo: " << *foo << 'n';
std::cout << "*bar: " << *bar << 'n';
return 0;
}
输出:* foo: 10*栏:20
#include <iostream>
#include <memory>
int main () {
int * foo;
int *bar = new int(10);
foo = bar;
*bar = 20;
std::cout << "*foo: " << *foo << 'n';
std::cout << "*bar: " << *bar << 'n';
return 0;
}
输出:* foo: 20*栏:20
如何使shared_pt B从shared_pt A, B具有相同的内部值作为A,无论A更改以后(如上面的原始指针的例子)?
如果你做同样的事情,它们的行为是一样的
int main() {
std::shared_ptr<int> foo;
std::shared_ptr<int> bar(new int(10));
foo = bar;
*bar = 20;
std::cout << "*foo: " << *foo << 'n';
std::cout << "*bar: " << *bar << 'n';
std::cin.get();
return 0;
}
相关文章:
- 将浮动的heightmap数组导出为16位原始值
- 给定一个向量,如何找到该向量的所有子集和的原始索引
- 有没有办法从非C/C++文件中读取C++原始字符串文字的内容
- 是否可以将llvm::FunctionType转换为C/C++原始函数指针
- 如何将原始字节附加到 std::vector?
- 从堆栈分配的原始指针构造智能指针
- 如何重写全局方法名称以在调用原始方法之前将我的代码推到前面
- 将unique_ptr分配给原始指针
- 是否可以从 OpenGL 缓冲区获取原始大小的像素?
- 使用 OpenSSL 从内存中读取原始 SSL/TLS 证书
- 如何将唯一指针的 std::vector 转换为原始指针的 std::span?
- 从原始字节解码协议缓冲区(以 C++为单位)
- C ++如何在原始抽象类中创建一个函数,该函数接受派生类的输入
- C++:尝试使用等效的 STL 算法消除原始循环
- 如何在连接器 C++ 中将原始字节转换为字符串
- 通过引用传递类不会更改原始类
- 实现使用模板化类而不使原始类成为模板的类
- 引用 std::shared:ptr 以避免引用计数
- 如何在 2d 矢量 c++ 中复制元素并将其放在原始元素旁边
- 打印原始阵列和更改的阵列