#include <iostream>
#include<memory>
#include<string>
using namespace std;
int main()
{
auto p = make_shared<int>(42); //!指向的物件只有p一個參考者。
cout << p.use_count() << endl;
auto q = make_shared<int>(56);//!指向的物件只有q一個參考者。
cout << q.use_count() << endl;
cout << "---------afterAssin-----" << endl;
p = q; //!p原來參考的物件經過賦值之后釋放掉了,q參考的物件有了p和q兩個參考。
cout << *p << "==" << *q << endl;
cout << q.use_count() << endl;
cout << p.use_count() << endl;
}
輸出結果:
1
1
-------- - afterAssin---- -
56 == 56
2
2
請按任意鍵繼續. . .
問題:為何最后一個輸出是2 而不是0
uj5u.com熱心網友回復:
找到原因了,p=q , q賦值給p 后,p,q指向同一個參考,所以是2uj5u.com熱心網友回復:
二樓說得對啊轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/186658.html
標籤:C++ 語言
下一篇:筆記:金融史
