您的位置:首页 > 编程语言 > C语言/C++

对C++中的构造函数和析构函数的说明

2014-10-11 10:09 190 查看
在C++中使用构造函数来处理对象的初始化,构造函数的名字必须与类名相同,并且构造函数不具有任何类型,不返回任何值。析构函数是一个特殊的成员函数,其作用于构造函数相反,但其并不是删除对象,而是在撤销对象所占用的内存之前完成一些清理工作。因为析构函数不能被重载,所以一个类中可以有多个构造函数,但只能有一个析构函数。

下面举一个简单的例子来说明构造函数和析构函数的执行顺序#include <string>
#include <iostream>
using namespace std;
class Student { //声明一个Student类
public:
Student(int n , string nam , char s); //声明构造函数
~Student(){ //声明析构函数,并在函数体中输出调用信息
cout << "Destructor called." << num << endl;
}
void display() ; //声明一个输出类
private:
int num; //声明3个成员变量
string name;
char sex;
};

Student :: Student(int n , string nam , char s) { //构造函数的初始化
num = n;
name = nam;
sex = s;
cout << "Constructor called." << num << endl ;
}

void Student :: display() {
cout << "num: " << num << endl;
cout << "name: " << name << endl;
cout << "sex: " << sex << endl;
}

int main(int argc, char* argv[])
{
Student student1(01 , "xu" , 'n'); //创建对象student1
student1.display();

Student student2(02 , "zhang" , 'n'); //创建对象student2
student2.display();

return 0;
}




可以看到输出结果,首先student1的构造函数被调用,然后是student1的输出函数,在接着是student2的构造函数和其输出函数。值得注意的是析构函数的调用顺序,通过输出可以看出,student2的析构函数首先被调用,最后调用的是student2的析构函数。这正是先购造的后析构,后构造的先析构,这类似于栈的操作。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c++ 面向对象编程