类声明和成员函数定义的分离
如果一个类只被一个程序使用,那么类的声明和成员函数的定义可以直接写在程序的开头,但如果一个类被多个程序使用,这样做的重复工作量就很大了,效率就太低了。在面向对象的程序开发中,一般做法是将类的声明(其中包含成员函数的声明)放在指定的头文件中,用户如果想用该类,只要把有关的头文件包含进来即可,不必再程序中重复书写类的声明,以减少工作量,节省篇幅,提高编程效率。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| #include <string> using namespace std;
class Student { public: Student(); Student(int num, string name, char sex); virtual ~Student(); void display(); private: int num; string name; char sex; };
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| #include "Student.h" #include <iostream>
Student::Student() { num = -1; name = ""; sex = 'F'; }
Student::Student(int num, string name, char sex){ this->num = num; this->name = name; this->sex = sex; }
Student::~Student(){ cout<<"Destructor called..."<<endl; }
void Student::display(){ cout<<"num:"<<num<<endl; cout<<"name:"<<name<<endl; cout<<"sex:"<<sex<<endl; }
|
1 2 3 4 5 6 7 8 9 10 11 12
| #include <iostream> #include "student.h" using namespace std;
int main() { Student stud1(1, "alyssa", 'M'); stud1.display(); Student stud2; stud2.display(); return 0; }
|
析构函数
析构函数:当对象的生命周期结束时,会自动执行析构函数。
- 析构函数的作用并不是删除对象,而是在撤销对象占用的内存之前完成一些清理工作,使这部分内存可以被程序分配给新对象使用。
- 析构函数不返回任何值,没有函数类型,也没有函数参数。
- 一个类可以有多个构造函数,但只能有一个析构函数。
- 析构函数不仅可以用来释放资源,还可以被用来执行“用户虚妄在最后一次使用对象之后所执行的任何操作。”
- 先构造的后析构,后构造的先析构。相当于一个栈,先进后出。