Joh*_*ohn 2 c++ shared-ptr pointer-to-member c++11
通过C++中的共享对象访问成员变量的安全方法是什么?
在下面的代码中,我创建一个共享变量,然后指向它的成员变量.但是,use_count保持不变,当我重置共享变量时,原始变量被重置但不是指向成员的指针.
换句话说,我可以通过使用b来介绍一些错误.它指向的对象不再存在.
#include <iostream>
#include <memory>
using namespace std;
struct A
{
int y;
A(int x)
{
y = x;
}
};
int main()
{
auto a = make_shared<A>(1);
cout << "a count: " << a.use_count() << endl; //prints a count: 1
auto b = a->y;
cout << "a count: " << a.use_count() << endl; //still prints a count: 1
a.reset();
cout << "a value: " << a << endl; //prints a value: 0
cout << "b value: " << b << endl; //prints b value: 1
return 0;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
697 次 |
| 最近记录: |