c++局部變量在外可用的方法


C++的局部變量在作用域結束后,一般都會被回收。如下面這段代碼

1 map<a*, b*> _map;
2 
3 void fun() 
4 {
5     a _a;
6     b _b;
7     _map[&_a] = &_b;
8 }

當fun執行完成后,a、b對象都會被析構,所以再訪問這兩個對象就會出現問題。

一種方法是將a、b對象的作用域改為全局的,但不符合建議。

一種解決方法是用new實例化對象,這樣,當fun執行完成后,C++便不會主動回收這兩個對象

1 void fun() 
2 {
3     a* _a = new a();
4     b* _b = new b();
5     _map[_a] = _b;
6 }

但new完對象后,一定要delete掉該對象。delete相當於調用了對象的析構函數。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM