一、构造函数
1.构造函数有什么用?
构造函数是初始化类对象的数据成员
2.分类
(1)默认构造函数、含参构造函数、复制构造函数(拷贝函数)、转换构造函数
3.形式
class 类名
{
public:
类名();
类名 ( 数据类型 参数,数据类型 参数 .....);#含参构造函数
~类名();
private:
数据类型 参数1;
数据类型 参数2;
}
4.典例
构造相应的学生类,并含有学号,成绩,姓名,并且学生对象不少于三个
代码如下:
#include<iostream>
#include<string>
class Student
{
public:
Student() = defualt;#默认构造函数
Student(string Name,int Num,float Score)#含参构造函数
{
name = Name;
num = Num;
score = Score;
cout << " 调用了含参构造函数" <<endl;
}
~Student();#析构函数 其与构造函数必须成对出现
void Display()
{
cout <<"学生姓名为:"<< name <<"学号为:"<< num <<"成绩为:" << score <<endl;
}
private:
string name;
int num;
float score;
};
int main()
{
Student stu1 = ("老王",1,100),stu2 = ("老黄",2,98),stu3 = ("老刘",3,96);
stu1.Display();
stu2.Display();
stu3.Display();
return 0;
}
注 : 当函数内有没有赋值的类对象时,系统会默认调用默认构造函数,当对相应构造函数赋予相应数值时,编译系统会调用含参构造函数.
二、析构函数
1.析构函数有什么用?
析构函数就是将对象创建时的空间(在构造函数使用时)销毁.
2.形式
~ 类名() ;
3.注意
(1) 析构函数是由编译系统自己调用,无需人工调用
(2)析构函数没有函数参数、返回值.
三、两者的次序
1.实验代码
#include<iostream>
#include<string>
using namespace std;
class Student
{
public:
Student();
Student(string Name,int Id);
void Display();
~Student()
{
cout << "调用了" << "学号为: "<< id<<" " <<"析构函数" << endl;
}
private:
string name;
int id;
};
Student :: Student()
{
cout << "在该处调用了默认构造函数" <<endl;
}
Student :: Student(string Name ,int Id)
{
name = Name;
id = Id;
cout << "调用了"<<"学号为: " << id << " " <<"含参构造函数" << endl;
}
void Student :: Display()
{
cout <<"这个学生的姓名为:"<<" " << id << " " << "学号为:" << id << endl;
}
int main()
{
Student stu1("老王",12),stu2("老李",13);
return 0;
}
2.结果: