c++ 智能指针学习
考虑以下代码: 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
using namespace std;
shared_ptr<int> p;
void setp(const int& b) {
p = make_shared<int>(b);
}
int main() {
int c = 10;
setp(c);
cout << *p << endl;
c = 20;
cout << *p << endl;
return 0;
}
你能说出它的输出是什么吗?
1 |
|
答案: 第一段代码: 1
210
10
第二段代码: 1
210
20
为什么会产生区别呢?原来 make_shared<T>(x)
等价于以 \(x\)
为初值构造一个指针,而不是构造一个绑定到 \(x\) 上的指针。
第一段代码