C++ 类

类声明和成员函数定义的分离

如果一个类只被一个程序使用,那么类的声明和成员函数的定义可以直接写在程序的开头,但如果一个类被多个程序使用,这样做的重复工作量就很大了,效率就太低了。在面向对象的程序开发中,一般做法是将类的声明(其中包含成员函数的声明)放在指定的头文件中,用户如果想用该类,只要把有关的头文件包含进来即可,不必再程序中重复书写类的声明,以减少工作量,节省篇幅,提高编程效率。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// student.h  这是头文件,在此文件中进行类的声明
#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
// student.cpp  在此文件中进行函数的定义
#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
// main.cpp  主函数模块
#include <iostream>
#include "student.h" // 将类声明头文件包含进来
using namespace std;

int main() {
Student stud1(1, "alyssa", 'M');
stud1.display();
Student stud2;
stud2.display();
return 0;
}

析构函数

析构函数:当对象的生命周期结束时,会自动执行析构函数。

  1. 析构函数的作用并不是删除对象,而是在撤销对象占用的内存之前完成一些清理工作,使这部分内存可以被程序分配给新对象使用。
  2. 析构函数不返回任何值,没有函数类型,也没有函数参数。
  3. 一个类可以有多个构造函数,但只能有一个析构函数。
  4. 析构函数不仅可以用来释放资源,还可以被用来执行“用户虚妄在最后一次使用对象之后所执行的任何操作。
  5. 先构造的后析构,后构造的先析构。相当于一个栈,先进后出。