构造函数与析构函数的比较

来源:互联网 发布:java开发框架是什么 编辑:程序博客网 时间:2024/06/05 18:54
 

觉得写得比较简单明了,故转载作记录。

转载:http://blog.163.com/liyl122539@126/blog/static/1805821620091123101193/?fromdm&fromSearch&isFromSearchEngine=yes

 

1、 构造函数:

(1)、 构造函数是成员函数,函数体可写在类体内,也可以写在类体外。

(2)、   构造函数是一个特殊的函数,该函数的名字与类名相同,该函数不指定类型说明,它有隐含的返回值,该值由系统内部使用。该函数可以有一个参数,也可以有多个参数。

(3)、  构造函数可以重载,即可以定义多个参数个数不同的构造函数。

(4)、  程序中不能直接调用构造函数,在创建对象时,系统自动调用构造函数。

2 、析构函数:

(1)、 析构函数是成员函数,函数体可写在类体内,也可以写在类体外。

(2)、  析构函数名字与类名同,并在前面加 ”~” 字符,析构函数不指定数据类型,并且也没有参数。

(3)、 一个类只可能定义一个析构函数。

(4)、  析构函数可以被调用,也可以由系统调用。在下面两种情况下,析构函数会被自动调用:

a、如果一个对象被定义在一个函数体内,则当这个函数结束时,该对象的析构函数被自动调用。

b、当一个对象是使用 new 运算符动态创建的,在使用 delete 运算符释放它时, delete 会自动调用析构函数。

例 13 :创建一个 Employee 类,该类中有字符数组,表示姓名、街道地址、市、省和邮政编码。把表示构造函数、 ChangeName() 、 display() 的函数原型放在类定义中,构造函数初始化每个成员, Display() 函数把完整的对象数据打印出来。其中的数据成员是保护的,函数是公共的。

用多文件结构实现:

**************employee.h**************************

class employee

{

public:

employee(char *na,char *street,char *city,char *di,char *po);

void changeName(char *);

void display();

protected:

char *name;

char *street;

char *city;

char *district;

char *post;

};

****************function.cpp**************

#include<iostream.h>

#include”employee.h”

employee::employee(char *na,char *st,char *ci,char *di,char *po)

{

name=na;

street=st;

city=ci;

district=di;

post=po;

}

void employee::changeName(char *na)

{

name=na;

}

void employee::display()

{

cout<<name<<endl;

cout<<street<<endl;

cout<<city<<endl;

cout<<district<<endl;

cout<<post<<Endl;

}

*********************test.cpp*********************

#include”employee.h”

void main()

{

employee a1(“WangFei”,”Street 200” ,”Tianjin”,”Zhixiashi”,” 300480” );

a1.display();

a1.changeName(“LiLi”);

a1.display();

}

原创粉丝点击