一个程序让你学会C++构造函数与重载构造、析构函数【C++类的经典使用案例】

一、构造函数的用法

#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;
}

1-1

二、构造函数的重载

#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; 
}

2-1

三、析构函数

#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;
}

3-1

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鸿蒙Next

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值