您的位置:首页 > 移动开发 > Objective-C

函数内临时变量的释放时刻

2012-04-13 11:45 225 查看
 

如果函数没有返回值,则函数内部的变量在函数执行结束之后全部释放;

如果函数有返回值,则函数内临时变量在函数所在的赋值语句执行完毕之后释放.

 

#include <iostream>

#include <string>

using namespace std;

class Base

{

public:

 Base():selfid(++n)

 {

  cout<<"Base "<<selfid<<" by default"<<endl;

 }

 Base(const Base& other):selfid(++n)

 {

 cout<<"Base  "<<selfid<<" by copy from "<<other.selfid<<endl;

 }

 Base& operator=(const Base& other)

 {

  cout<<"Base  "<<selfid<<" by = from "<<other.selfid<<endl; return *this;

 }

 virtual ~Base()

 {

  cout<<"Base  "<<selfid<<" destroyed"<<endl;

 }

private:

 int selfid;

 static n;

};

int Base::n=0;

Base Test()

{

 return Base();

}

int main()

{

 Base b1;

 b1=Test();

 return 0;

}

 

 


从这里可以看出,函数Test内的b2,的释放是发生在赋值语句b1=Test()之后进行的

 

你能说出这里至少两处合理性吗?因为如果提前释放,赋值语句找不到赋值的来源.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  object class
相关文章推荐