标签:使用 java sp 数据 bs amp new c++ nbsp
为什么java采用垃圾回收而c++却不采用,这是因为在java中,所有对象变量都是引用,当一个引用被新对象覆盖掉时,就没有引用指向原来的对象了,这个对象就“失控了”。
而C++中,除非使用特殊符号&标明变量名是引用,否则变量指的是对象,对象是有生命周期的,在生命周期结束时会调用析构函数完成内存释放,而C++引用的对象,必须变量指向,清楚点说是首先要声明对象后才可以对其引用,即使引用后来又指向其他变量,也不会导致原来的对象引用数为0,这样仍然可以调用其析构函数(通过指向对象的变量),而java的引用已经指向其他对象,所以无法获取原来对象的地址,这也是为什么java为什么都把数据放在堆中。
这里没有考虑C++new的情况
RAII超越函数声明周期:
标签:使用 java sp 数据 bs amp new c++ nbsp
原文地址:http://www.cnblogs.com/johnnyflute/p/4077753.html