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

2023-05-16

文章目录

    • 一、构造函数的用法
    • 二、构造函数的重载
    • 三、析构函数

一、构造函数的用法

#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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

  • 计算机组成原理4(程序查询方式、程序中断方式、DMA方式及其I/O接口电路)

    文章目录 一 程序查询方式二 程序中断方式三 DMA方式 一 程序查询方式 1 程序查询方式的接口电路 2 符号说明 amp 与非门B工作触发器D完成触发器 3 程序查询工作过程 xff08 输入 xff09 xff08 1 xff09 当
  • C/C++库函数math用法案例篇一

    文章目录 1 绝对值函数 xff08 abs xff0c fabs xff0c labs xff09 2 三角函数 xff08 cos xff0c sin xff0c tan xff09 3 反三角函数 xff08 acos xff0c a
  • C/C++库函数math用法案例篇二

    文章目录 1 floor函数 xff08 求不大于x的最大整数 xff09 2 fmod函数 xff08 返回a b的余数 xff09 3 frexp xff08 将浮点数分解成尾数和指数 xff09 5 modf函数 xff08 将浮点数
  • 从C语言到C++的进阶之C到C++的转变(篇一)

    文章目录 一 C语言到C 43 43 语言1 C语言2 C 43 43 语言3 C与C 43 43 的联系 二 C到C 43 43 的明显转变1 C 43 43 的关键字系列2 函数必列参数3 指针类型相同才能赋值4 对struct等封装类
  • 从C语言到C++的进阶之C++的非类新特性(篇二)

    文章目录 1 输出输入使用 cout lt lt 和 cin gt gt 2 访问外部变量3 从指针到引用4 引用与指针的比较5 返回引用类型的函数 1 输出输入使用 cout lt lt 和 cin gt gt span class to
  • 从C语言到C++的进阶之C++的非类新特性(篇三)

    文章目录 1 从宏到内联函数2 函数参数的缺省值3 C 43 43 的常量与引用4 函数重载5 new运算和delete运算 1 从宏到内联函数 xff08 1 xff09 写一个返回最大值的宏定义 xff08 C语言 xff09 span
  • 从C语言到C++的进阶之面向对象、using与命名空间(篇四)

    文章目录 一 面向过程到面向对象二 namespace的使用三 using的用法 一 面向过程到面向对象 1 面向过程编程思想 C语言是典型的面向过程编程语言 xff0c 面向过程是一种以过程为中心的编程思想 xff0c 通过分析出解决问题
  • Angular执行测试报错: 'router-outlet' is not a known element

    本机环境 xff1a ng version Angular CLI 7 1 1 Node 10 11 0 OS darwin x64 Angular 7 1 1 animations cli common compiler compiler
  • 从C语言到C++的进阶之一些C基础上的增强用法(篇五)

    文章目录 1 全局变量的检测增强2 新增Bool类型3 三目运算的增强4 指针与常量的引用 xff08 别名 xff09 5 内联函数的限制6 函数的占位参数7 extern 34 C 34 的用法 1 全局变量的检测增强 C 43 43
  • C语言经典排序算法之快速排序(详解)

    文章目录 一 何为算法二 排序算法三 快速排序算法 一 何为算法 1 算法 xff08 Algorithm xff09 xff0c 是程序设计的灵魂 xff0c 它是利用系统的方法描述解决问题策略的机制 2 正确算法应满足的性质 xff1a
  • C语言经典查找算法之二分查找(详解)

    文章目录 一 查找算法二 二分查找算法 一 查找算法 查找是在大量的信息中寻找一个特定的信息元素 xff0c 在计算机应用中 xff0c 查找是常用的基本运算 xff0c 例如编译程序中符号表的查找 二 二分查找算法 1 算法思想 该查找算
  • C语言经典递推算法之杨辉三角展开(详解)

    文章目录 一 递推算法二 杨辉三角展开 一 递推算法 这是一种比较简单的算法 xff0c 即通过已知条件 xff0c 利用特定关系得到中间结论 xff0c 然后得到最后结果的算法 递推算法可以分为顺推和逆推两种 二 杨辉三角展开 1 杨辉三
  • C语言经典迭代算法之求解函数定积分(详解)

    文章目录 一 迭代算法二 梯形法求解定积分 一 迭代算法 1 辗转迭代 迭代法也称辗转法 xff0c 它是一种不断用旧的变量值递推得到新值的过程 迭代法是用计算机解决问题的一种基本方法 xff0c 它利用计算机运算速度快 适合做重复性操作的
  • C语言经典递归算法之和式分解

    文章目录 一 递归算法二 和式分解 一 递归算法 1 递归 递归就是自己调用自己 xff0c 它是设计和描述算法的一种有力工具 xff0c 常常用来解决比较复杂的问题 递归是一种分而治之 xff0c 将复杂问题转化难为简单的问题的求解方法
  • C语言经典枚举算法之谁在说谎(详解)

    文章目录 一 枚举算法二 谁在说谎问题 一 枚举算法 1 枚举 枚举算法是我们在日常中使用到的最多的一个算法 xff0c 它的核心思想就是 枚举所有的可能 枚举法的本质就是从所有候选答案中去搜索正确的解 2 使用枚举算法需要满足两个条件 1
  • C语言经典贪心算法之加油站问题(详解)

    文章目录 一 贪心算法二 加油站问题 一 贪心算法 贪心算法暗示一种不追求最优解 xff0c 只希望找到较为满意解的方法 贪心算法省去了为找最优解要穷尽所有可能而必须耗费大量时间 xff0c 因此它一般可以快速得到较为满意的答案 贪心算法常
  • C语言经典回溯算法之解决数的组合问题(详解)

    文章目录 一 回溯算法二 数的组合问题 一 回溯算法 1 回溯法 也叫试探法 xff0c 实际上是一个类似枚举的搜索尝试过程 xff0c 主要是在搜索尝试过程中寻找问题的解 xff0c 当发现已不满足求解条件时 xff0c 就 回溯 返回
  • C语言经典矩阵算法之打印魔方阵(详解)

    文章目录 一 矩阵算法二 打印魔方阵 一 矩阵算法 1 矩阵 矩阵 xff0c 是线性代数中的基本概念之一 一个m n的矩阵就是m n个数排成m行n列的一个数阵 由于它把许多数据紧凑的集中到了一起 xff0c 所以有时候可以简便地表示一些复
  • Angular报错问题:Can't bind to 'formGroup' since it isn't a known property of 'form'

    Angular报错问题 xff1a Can t bind to formGroup since it isn t a known property of form 报错提示 xff1a Uncaught Error span class t
  • 单片机串口通信与同步异步通信

    文章目录 一 串口通信二 异步通信三 同步通信四 串行通信的传输方向 一 串口通信 1 随着多微机系统的广泛应用和计算机网络技术的普及 xff0c 计算机的通信功能愈来愈显得重要 计算机通信是指计算机与外部设备或计算机与计算机之间的信息交换

随机推荐