您的位置:首页 > 其它

面向对象的 构造函数和析构函数 调用 生命周期

2012-11-27 09:44 288 查看
最近使用socket .用C++做服务器端。Python做客户端。socket都是用类写的。其socket的close函数在析构函数时调用。所以必须掌握好什么时候去执行析构,不让就会出现socket莫名其妙的关掉。



构造函数的什么时候调用:

在你实例化一个对象 或者 定义一个对象指针的时候都会调用相应的构造函数。



析构函数:

实例化该对象,析构函数就会随着该对象的生命周期结束而调用



定义对象指针,因为对象指针式是全局的,只有当应用程序结束的时候指针才会无效,此时析构函数才会调用,如果想自己调用,只有delete改类的指针就行。



总结:

也就说构造函数随着类的对象出现而调用,析构函数随着类的生命结束而调用。就是要知道类的生命周期。



下面是测试代码:

// 析构函数生命周期.cpp : 定义控制台应用程序的入口点。

//

#include "stdafx.h"

#include "stdlib.h"

#include "stdio.h"

#include "iostream"

#include "string"

using namespace std;

class cat{

public:

string name;

cat(string catname){

cout<<catname<<"cat is bored"<<endl;

name = catname;

}

~cat(){

cout<<name<<"cat is died"<<endl;

}

void show(){

cout<<"show me name is :"+name<<endl;

}

private:

};

void catA (string name,int i)

{

cat *cat1 = new cat(name);



if (i == 1)

{

delete cat1;

cout<<name<<"cat" <<i<<" 被你杀了"<<endl;

}else{

cout<<name<<"cat现在还活着"<<endl;

}

}

void catB()

{

cat cat2("jorn");

}

int _tmain(int argc, _TCHAR* argv[])

{



catB();

catA("Tom",2);

//=======================================

catA("bily",1);

return 0;

}







内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: