C 面向对象编程入门:构造函数与析构函数4
来源:百度文库 编辑:神马文学网 时间:2024/04/29 14:20:12
那么我们将如何编写类的析构函数呢?
析构函数可以的特性是在程序结束的时候逐一调用,那么正好与构造函数的情况是相反,属于互逆特性,所以定义析构函数因使用"~"符号(逻辑非运算符),表示它为腻构造函数,加上类名称来定义。
看如下代码:
#include
#include
using namespace std;
class Teacher
{
public:
Teacher()
{
director = new char[10];
strcpy(director,"王大力");
//director = new string;
// *director="王大力";//string情况赋值
}
~Teacher()
{
cout<<"释放堆区director内存空间1次";
delete[] director;
cin.get();
}
char *show();
protected:
char *director;
//string *director;
};
char *Teacher::show()
{
return director;
}
class Student
{
public:
Student()
{
number = 1;
score = 100;
}
void show();
protected:
int number;
int score;
Teacher teacher;
};
void Student::show()
{
cout<}
void main()
{
Student a;
a.show();
Student b[5];
for(int i=0; i{
b[i].show();
}
cin.get();
}
上面的代码中我们为Teacher类添加了一个名为~Teacher()的析构函数用于清空堆内存。
建议大家编译运行代码观察调用情况,程序将在结束前也就是对象生命周期结束的时候自动调用~Teacher()
~Teache()中的delete[] director;就是清除堆内存的代码,这与我们前面一开始提到的。
name=input_name;//这样赋值是错误的
有直接的关系,因为delete操作符只能清空堆空间而不能清楚桟空间,如果强行清除栈空间内存的话将导致程序崩溃!
析构函数可以的特性是在程序结束的时候逐一调用,那么正好与构造函数的情况是相反,属于互逆特性,所以定义析构函数因使用"~"符号(逻辑非运算符),表示它为腻构造函数,加上类名称来定义。
看如下代码:
#include
#include
using namespace std;
class Teacher
{
public:
Teacher()
{
director = new char[10];
strcpy(director,"王大力");
//director = new string;
// *director="王大力";//string情况赋值
}
~Teacher()
{
cout<<"释放堆区director内存空间1次";
delete[] director;
cin.get();
}
char *show();
protected:
char *director;
//string *director;
};
char *Teacher::show()
{
return director;
}
class Student
{
public:
Student()
{
number = 1;
score = 100;
}
void show();
protected:
int number;
int score;
Teacher teacher;
};
void Student::show()
{
cout<
void main()
{
Student a;
a.show();
Student b[5];
for(int i=0; i
b[i].show();
}
cin.get();
}
上面的代码中我们为Teacher类添加了一个名为~Teacher()的析构函数用于清空堆内存。
建议大家编译运行代码观察调用情况,程序将在结束前也就是对象生命周期结束的时候自动调用~Teacher()
~Teache()中的delete[] director;就是清除堆内存的代码,这与我们前面一开始提到的。
name=input_name;//这样赋值是错误的
有直接的关系,因为delete操作符只能清空堆空间而不能清楚桟空间,如果强行清除栈空间内存的话将导致程序崩溃!
C 面向对象编程入门:构造函数与析构函数4
C 面向对象编程入门:构造函数与析构函数4
C 面向对象编程入门:构造函数与析构函数1
C 面向对象编程入门:构造函数与析构函数5
C 面向对象编程入门:构造函数与析构函数6
c 面向对象的编程入门篇--类构造函数与析构函数
C 面向对象编程入门:构造函数与析构函数2
C 面向对象编程入门:构造函数与析构函数6
C++面向对象编程入门:构造函数与析构函数
面向对象编程入门:构造函数与析构函数6
PHP5的对象模型[4]--构造函数和析构函数 - Haohappy的专栏--PHP5研究...
C++类对象的拷贝构造函数
构造函数、析构函数和赋值操作符
C 类对象的复制-拷贝构造函数(深拷贝,浅拷贝
JavaScript Date 对象与函数
C++学习摘要之二:构造函数和析构函数 -计算机等级考试-考试吧
我所理解的拷贝构造函数和赋值函数 -- 业余空间 -- 编程爱好者博客
函数指针 (*(void (*)( ) )0)( ) 解析|函数,函数指针,C编程-中国源...
C++拷贝构造函数
拷贝构造函数
构造函数而不是类
拷贝构造函数
拷贝构造函数1
C++拷贝构造函数