快捷搜索: 王者荣耀 脱发

C++笔记(二)——构造/析构函数、对象数组

🍎1. 构造函数

一个类只能有一个默认构造函数

🍇1.1 构造函数的作用

用来处理对象的初始化,不需要用户来调用,而在建立对象时自动执行。构造函数名必须与类名相同,不具备任何类型,不返回任何值

class Time
{
          
   
	public:
		Time();
}

🍇1.2 两种类型的构造函数

在一个类中可以定义多个不同的构造函数,它们具有相同的名字,但是参数的个数和参数的形式会有所不同

  1. 不带参数的构造函数
  2. 带参数的构造函数 class Time { public: Time(); Time(int, int, int); private: int a,b,c; } Time::Time(int x, int y, int z) { a = x; b = y; c = z; }

🍇1.3 用参数初始化表对数据成员初始化

class Time
{
          
   
	public:
		Time();
		Time(int x, int y, int z):a(x),b(y),c(z){
          
   }
	private:
		int a,b,c;
}

🍎2. 析构函数

🍇2.1 析构函数的作用

  1. 撤销对象占用的内存之前完成的一些清理工作,使这部分内存可以被程序分配给新对象使用。
  2. 析构函数不返回任何值,没有函数类型,没有参数,不能被重载
  3. 一个类可以用多个构造函数,但只能有一个析构函数
  4. 用new运算符动态建立了一个对象,当用delete运算符释放该对象时,先调用该对象的析构函数

🍇2.2 构造函数和析构函数的顺序

先构造的后析构,后构造的先析构

🍎3. 对象数组

在建立对象数组时,分别调用构造函数,对每个元素初始化。每个元素的实参分别用括号包起来,对应构造函数的一组形参,不会混淆。使用方法:

Time t[3] = {
          
   Time(1,2,3), Time(4,5,6), Time(7,8,9)};

一个使用的例子

#include<iostream>
using namespace std;
class Box
{
          
   
	public:
		Box(int h=10,int w=12,int len=15):height(h),width(w),length(len){
          
   }
		int volume();
	private:
		int height,width,length;
};

int Box::volume()
{
          
   
	return (height * width * length);
}

int main()
{
          
   
	Box a[3] = {
          
   Box(1,2,3),Box(4,5,6),Box(7,8,9)};
	cout << "volume of a[0] is " << a[0].volume() << endl;
	cout << "volume of a[1] is " << a[1].volume() << endl;
	cout << "volume of a[2] is " << a[2].volume() << endl;
}

下一章:

经验分享 程序员 微信小程序 职场和发展