文章目录
- 一、构造函数的用法
- 二、构造函数的重载
- 三、析构函数
一、构造函数的用法
#include <iostream>
using namespace std;
//声明Time类
class Time
{
public: //成员函数共有部分
Time() //定义构造成员函数,函数名与类名相同
{
hour= 0; //利用构造函数给对象中的数据成员都赋初值为0
minute= 0;
sec= 0;
}
//成员函数的声明
void set_time();
void show_time(void);
private: //类的私有数据部分
int hour; //默认数据也是私有的
int minute;
int sec;
};
//定义成员函数
//获取时间数据函数
void Time::set_time(void)
{
cout << "分别请输入小时、分钟、秒数:" ;
cin >> hour;
cin >> minute;
cin >> sec;
}
//显示时间格式的函数
void Time::show_time(void) //显示时间函数
{
cout << "将输入的数字用标准时间显示为:" << endl;
cout << hour << ":" << minute << ":" << sec << endl;
}
//主函数
int main()
{
Time t1; //通过类Time实例化对象t1
t1.set_time(); //调用成员函数,给t1的数据成员赋值
t1.show_time(); //显示t1的数据成员值
return 0;
}
二、构造函数的重载
#include <iostream>
using namespace std;
//声明一个Box类
class Box
{
public:
Box(); //声明一个无参数的构造函数(并未定义)
//定义一个有参数的构造函数,用参数的初始化表对数据成员初始化
Box(int h, int w, int len):height(h), width(w), length(len){ }
//相当于:
// Box(int h, int w, int len)
// {
// h= height;
// w= width;
// length= len;
// }
int Volume(); //声明成员函数V,也就是计算体积的函数
private: //私有部分,数据成员的定义
int height;
int width;
int length;
};
//在类外面定义无参数的构造函数Box
Box::Box()
{
height= 10; //在构造函数里对类的私有成员进行私有化
width= 10;
length= 10;
}
//在类外定义进行有长、宽、高计算的成员函数
int Box::Box::Volume()
{
return (height * width * length);
}
int main()
{
Box b1; //通过Box类实例化对象b1
cout << "通过无参构造函数初始化的盒子体积为:" << b1.Volume() << endl;
Box b2; //实例化对象b2
cout << "通过有参构造函数初始化的盒子体积为:" << b2.Volume() << endl;
return 0;
}
三、析构函数
#include <iostream>
#include <string.h> //包含字符串头文件,可以定义字符串类型
using namespace std;
class Student
{
public:
Student(int n, string nam, char s) //定义又参数的构造函数
{
num= n;
name= nam; //第一个name是私有成员数据,第二个nam是传入构造函数的参数
sex= s;
cout << "构造函数执行完毕!" << endl;
}
~Student() //定义析构函数
{
cout << "析构函数已执行!" << endl;
}
void display(); //声明无参数的成员函数,显示出数据
private:
int num;
string name; //字符串类型
char sex;
};
//定义成员函数,显示出学生的信息
void Student::display()
{
cout << "I am " << name << ", my Id is " << num;
if(sex=='f')
{
cout << " and I am a girl." << endl; //如果性别是f,则输出是个girl
}
else
{
cout << "and I am a boy." << endl;
}
}
int main()
{
Student stu1(10001, "Hawk Chung", 'f'); //实例化对象stu1,给构造函数传入3个参数
stu1.display(); //调用成员函数,显示出学生1的信息
Student stu2(10002, "Zahuw", 'm'); //实例化对象stu2,给构造函数传入3个参数
stu2.display(); //调用成员函数,显示出学生2的信息
return 0;
}