构造函数和构析函数的作用
- 到底啥是构造函数?
- 到底啥是构析函数?
构造函数,说白了,就是起到取款机的作用,用户取钱都要通过取款机去执行
一、
构造函数起到传递参数和访问私有数据成员的作用,如以下代码
#ifndef BOX_H_H
#define BOX_H_H
class Box
{
public:
Box(int = 10, int = 10, int = 10);
int volume();
private:
int height;
int width;
int length;
};
Box::Box(int h, int w, int l)
{
height = h;
width = w;
length = l;
}
int Box::volume()
{
return(height * width * length);
}
#endif // !1
#include "Box.h"
#include<iostream>
using namespace std;
int main()
{
Box Box1(12, 34, 45);//创建两个对像Box1和Box2
Box Box2;
cout << Box1.volume()<< endl << endl;
Box2 = Box1;//将Box1的值赋值给Box2
cout << Box2.volume()<< endl << endl;//调用函数volume()
return 0;
}
我们先分析以上的构造函数代码片段,在类的公有成员里面,我们对构造函数进行初始化,其初始的值都为int型,并且都为10,之后,我们在类的外面对构造函数进行定义,定义的格式为:类名::类名(参数){},以上定义的构造函数的参数为h,w,l,在这个构造函数体里面,将这三个参数分别赋值给私有数据成员
height,width,length,之后,之后建立对象的时候,比如我建立了一个Box1(12,34,45)对象,这个对象就的实参就被构造函数进行调用,将12,34,45的值分别赋值给了构造函数的私有数据成员,height,width,length,此时我们就发现,构造函数起到了访问私有数据成员的作用,说白了,想访问私有数据成员,并且给私有数据成员赋值,就必须使用构造函数来访问,就比如说,我想去银行ATM取款机领钱,我不能直接撬开取款机来领钱,必须要通过取款机来领钱,当然你也可以撬开取款机来领钱,但是后果你懂的。
假如我们建立对象的时候,不给对象里面参数是空的,比如Box4,那么,构造函数就默认他们的初始值都为10,如下图的输出结果
构析函数
#include<iostream>
#include<string>
using namespace std;
class student
{
public:
student(long n, string na, char s)
{
num = n;
name = na;
sex = s;
cout << "大家好!我的名字叫做" << endl;
}
~student()
{
cout << "大家好!我叫构析函数!" << endl;
}
void display()
{
cout << num << endl;
cout << name << endl;
cout << sex << endl;
}
private:
long num;
string name;
char sex;
};
int main()
{
student student1(85190217,"江小白",'m');
student1.display();
return 0;
}
这个图片是执行了以上代码的结果,在程序的最后,执行了构析函数,释放了对象所占用的内存空间