读书人

摘引有没有生命周期的概念!

发布时间: 2012-09-04 14:19:30 作者: rapoo

引用有没有生命周期的概念!!
不知道怎么纠结这个问题!比如下面这段代码:

C/C++ code
#include <iostream>using namespace std;class A{public:    ~A(){        cout<<"Destructor"<<endl;    }};void fun(A & ra){}int main(){        A a;    fun(a);    return 0;}

如果引用有生命周期的话,在fun函数中,作为区域变量的ra在生命周期结束也就是函数调用结束的时候会调用类A的析构函数,而在主函数main中,在主函数结束的时候a也会调用其析构函数,由于引用ra和a指向的是同一段内存,就会造成内存的多次释放,但是貌似又没有!怎么解释??

[解决办法]
1.引用不是对象, 生命周期是属于对象的, 引用没有生命周期.

2.对象的析构函数的调用跟它的引用没有关系
[解决办法]
第2点还是要补充一下,

1.用引用来调用它的析构函数.

2.当常引用绑定到临时对象时,临时对象的生命周期被延长.
[解决办法]
可以先干掉它obj.~obj();然后又初始化它obj.obj();

读书人网 >C++

热点推荐