c语言析构函数怎么写 c语言实现析构

c语言中怎样使用析构函数 不是c++里面的内容仅仅是C语言中怎样使用析构函数

C语言是面向过程的编程语言,构造函数和析构函数是用在面向对象的编程语言里的。所以C里面是没有析构函数的!

网站建设哪家好,找创新互联公司!专注于网页设计、网站建设、微信开发、微信平台小程序开发、集团企业网站建设等服务项目。为回馈新老客户创新互联还提供了怀安免费建站欢迎大家使用!

C语言 类的构造函数和析构函数(考试在线等!急!!!)

类是编程人员表达自定义数据类型的C++机制。它和C语言中的结构类似,C++类

支持数据抽象和面向对象的程序设计,从某种意义上说,也就是数据类型的设

计和实现。

一、类的设计

1.类的声明

class 类名

{

private: //私有

...

public: //公有

...

};

2.类的成员

一般在C++类中,所有定义的变量和函数都是类的成员。如果是变量,我们就叫

它数据成员如果是函数,我们就叫它成员函数。

3.类成员的可见性

private和public访问控制符决定了成员的可见性。由一个访问控制符设定的可

访问状态将一直持续到下一个访问控制符出现,或者类声明的结束。私有成员

仅能被同一个类中的成员函数访问,公有成员既可以被同一类中的成员函数访

问,也可以被其他已经实例化的类中函数访问。当然,这也有例外的情况,这

是以后要讨论的友元函数。

类中默认的数据类型是private,结构中的默认类型是public。一般情况下,变

量都作为私有成员出现,函数都作为公有成员出现。

类中还有一种访问控制符protected,叫保护成员,以后再说明。

4.初始化

在声明一个类的对象时,可以用圆括号()包含一个初始化表。

看下面一个例子:

#include iostream.h

class Box

{

private:

int height,width,depth; //3个私有数据成员

public:

Box(int,int,int);

~Box();

int volume(); //成员函数

};

Box::Box(int ht,int wd,int dp)

{

height=ht;

width=wd;

depth=dp;

}

Box::~Box()

{

//nothing

}

int Box::volume()

{

return height*width*depth;

}

int main()

{

Box thisbox(3,4,5); //声明一个类对象并初始化

cout return 0;

}

当一个类中没有private成员和protected成员时,也没有虚函数,并且不是从

其他类中派生出来的,可以用{}来初始化。(以后再讲解)

5.内联函数

内联函数和普通函数的区别是:内联函数是在编译过程中展开的。通常内联函

数必须简短。定义类的内联函数有两种方法:一种和C语言一样,在定义函数时

使用关键字inline。如:

inline int Box::volume()

{

return height*width*depth;

}

还有一种方法就是直接在类声明的内部定义函数体,而不是仅仅给出一个函数

原型。我们把上面的函数简化一下:

#include iostream.h

class Box

{

private:

int height,width,depth;

public:

Box(int ht,int wd,int dp)

{

height=ht;

width=wd;

depth=dp;

}

~Box();

int volume()

{

return height*width*depth;

}

};

int main()

{

Box thisbox(3,4,5); //声明一个类对象并初始化

cout return 0;

}

这样,两个函数都默认为内联函数了。

C语言析构函数问题

构造函数错了,不是析构函数错了,看下面:

#include iostream   // 包含头文件iostream

using namespace std;  // 使用命名空间std

class Course

{

public:

Course(int pId, char* pName, int pHours, char* pTeacherInCharge);

void printCourse();

~Course();

private:

int  id;

char *name;

int  hours;

char *teacherInCharge;

};

Course::Course(int pId, char* pName, int pHours, char* pTeacherInCharge)

{

id=pId;

hours=pHours;

name= new char[strlen(pName)+1]; 

if (name !=NULL) strcpy(name,pName);//name=pName;

teacherInCharge= new char[strlen(pTeacherInCharge)+1]; 

if(teacherInCharge!=NULL) strcpy(teacherInCharge,pTeacherInCharge);//teacherInCharge=pTeacherInCharge;

}

void Course::printCourse()

{

cout"ID  ""NAME  ""HOURS   ""TEACHINCHARGE   "endl;

coutidname hoursteacherInChargeendl;

}

Course::~Course()

{

cout"destructing……"endl;

delete[] name;

delete[] teacherInCharge;

}

int main ()

{

Course c[3]={Course(0001,"lili",36,"zhangsan"),Course(0002,"sary",36,"wanger"),Course(0003,"mary",36,"zhaoqian")};

for (int i=0;i3;i++)

c[i].printCourse();

return 0;

}

如何用c语言实现CString的构造函数,析构函数和赋值函数

类是编程人员表达自定义数据类型的C++机制。它和C语言中的结构类似,C++类

支持数据抽象和面向对象的程序设计,从某种意义上说,也就是数据类型的设

计和实现。

那么

String

类的原型如下

class

String

{

public:

String(const

char

*str=NULL);

//构造函数

String(const

String

other);

//拷贝构造函数

~String(void);

//析构函数

String

operator=(const

String

other);

//等号操作符重载,赋值函数

ShowString();

private:

char

*m_data;

//字符指针

};

String::~String()

{

delete

[]

m_data;

//析构函数,释放地址空间

}

String::String(const

char

*str)

{

if

(str==NULL)//当初始化串不存在的时候,为m_data申请一个空间存放'/0';

{

m_data=new

char[1];

*m_data='/0';

}

else//当初始化串存在的时候,为m_data申请同样大小的空间存放该串;

{

int

length=strlen(str);

m_data=new

char[length+1];

strcpy(m_data,str);

}

}

String::String(const

String

other)//拷贝构造函数,功能与构造函数类似。

{

int

length=strlen(other.m_data);

m_data=new

[length+1];

strcpy(m_data,other.m_data);

}

String

String::operator

=(const

String

other)

//赋值函数

{

if

(this==other)//当地址相同时,直接返回;

return

*this;

delete

[]

m_data;//当地址不相同时,删除原来申请的空间,重新开始构造;

int

length=sizeof(other.m_data);

m_data=new

[length+1];

strcpy(m_data,other.m_data);

return

*this;

}

String::ShowString()//由于m_data是私有成员,对象只能通过public成员函数来访问;

{

coutthis-m_dataendl;

}

测试一下:

main()

{

String

AD;

char

*

p="ABCDE";

String

B(p);

AD.ShowString();

AD=B;

AD.ShowString();

}


文章名称:c语言析构函数怎么写 c语言实现析构
分享地址:http://ybzwz.com/article/doiiehd.html