引用有没有生命周期的概念!!
不知道怎么纠结这个问题!比如下面这段代码:
- 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();