文章目录
🍎1. 构造函数
一个类只能有一个默认构造函数
🍇1.1 构造函数的作用
用来处理对象的初始化,不需要用户来调用,而在建立对象时自动执行。构造函数名必须与类名相同,不具备任何类型,不返回任何值
class Time
{
public:
Time();
}
🍇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 析构函数的作用
- 撤销对象占用的内存之前完成的一些清理工作,使这部分内存可以被程序分配给新对象使用。
- 析构函数不返回任何值,没有函数类型,没有参数,不能被重载
- 一个类可以用多个构造函数,但只能有一个析构函数
- 用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;
}
下一章:对象指针