1. 这个c++析构函数要怎么写
这类写的有意思。。。嘿嘿
看一楼,一楼解释的很清楚了。 最好把防止复制对象,把operator = 和复制构造函数设为private。
PS:
已经回答,请查看。
PS的PS:
那帖子已经达到修改上限,在这里修改了。
你说的对,那类是自我调用,每次new的时候已经初始化了next了。
刚才又看了下,是析构函数中的问题。
while循环中
上一个对象已经把它析构了,然而它自己本身while还是在循环析构后面的,每个对象都是这样,所以会错误。
2. 什么是析构函数
构函数(destructor) 与构造函数相反,当对象脱离其作用域时(例如对象所在的函数已调用完毕),系统自动执行析构函数。析构函数往往用来做“清理善后” 的工作(例如在建立对象时用new开辟了一片内存空间,应在退出前在析构函数中用delete释放)。
以C++语言为例,析构函数名也应与类名相同,只是在函数名前面加一个波浪符~,例如~stud( ),以区别于构造函数。它不能带任何参数,也没有返回值(包括void类型)。只能有一个析构函数,不能重载。如果用户没有编写析构函数,编译系统会自动生成一个缺省的析构函数,它也不进行任何操作。所以许多简单的类中没有用显式的析构函数。
3. 结构体可以编写析构函数吗
当然可以,结构体和类的唯一区别就是其成员变量默认为公有,而类为私有。当然它也可以有自己构造函数和析构函数了。例如:
class CExample
{
struct SExample
{
SExample()
{
a = 0x00;
b = 0x00;
}
~SExample()
{
if(a!=NULL)
{
delete[] a;
}
if(b!=NULL)
{
delete[] b;
}
..
}
private:
int *a;
char *b;
..
}
public:
CExample()
{
sexample = 0x00;
}
~CExample()
{
if(sexample!=NULL)
delete[] sexample;
..
}
private:
SExample *sexample;
。.
}
在类里面定义了一个结构体
4. 这个程序里的析构函数怎么写
#include