您的位置:首页 > 其它

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

2011-09-28 11:14 253 查看
 
觉得写得比较简单明了,故转载作记录。
转载: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();
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  delete class