第9 章 关于类和对象的进一步讨论
对象的初始化不能在声明类的时候,如果一个类的所有成员都是公用的,就可以在定义对象的时候初始化。C++使用构造函数来初始化对象。构造函数可以定义在声明的类体中,也可以在类体中声明,在类外定义,由建立对象时自执行的。如果不定义构造函数,在建立对象时也会自动调用一个构造函数,但是不起任何的作用。构造函数没有返回值,所以不需要声明类型。不能被用户调用。
构造函数和类名相同。
带参数的构建函数
这时构造函数的格式:
定义对象:
用参数初始化表对数据成员初始化:
Box::Box(int h, int w, int len):height(h),width(w),length(len){}
意义就是:height = h;width = w;length = len;
构造函数重载
无参的构造函数默认的构造函数,尽管一个类可以定义多个构造函数,但是只会执行一个构造函数。使用方法:
在类中声明两个构造函数:
Box()
Box(int h ,int w, int len):height(h),width(w),length(len){}
在类外定义:
Box::Box()
{height = 10;
length = 10;
}
使用默认参数的构造函数
如 Box(int h = 10,int w = 10, int len = 10);//这时在类体中的声明。
在一个类中定义了全部默认参数的构造函数后,不能再定义重载构造函数。
析构函数
析构函数的名是在类名前加一个“~”符号。对象的生命周期结束时,会自动执行析构函数。析构函数的作用不是删除对象,而是在撤销对象占用的内存之前完成一些清理工作。析构函数没有返回值,没有参数,没有函数类型。一个对象只能有一个析构函数,这和构造函数不同。如果没有定义,编译系统会自动生成一个析构函数,但是没做什么工作而已。
一般情况下是先构造的后析构,后构造的先析构。必须注意的是,析构函数时在对象从内存撤销的时候才自动执行的。
对象数组
注意对象数组的初始化
Box
Box (10, 12, 15),
Box(11,13,14),
Box (16,20,26)
};
指向对象的指针
类名 *对象指针名
对象空间的起始地址就是对象的指针。P为指针。
(*p)。stu
指向对象成员的指针
定义指向对象数据成员的指针变量的一般定义:
数据类型名 * 指针变量名
int *p = & t1.hour ;//对象t1中的hour成员
指向对象成员函数的指针:
1.
2.
如:void (Time::*p)();
p=&Time::gettime;
也可以合为一行:void (Time::*p)()=&Time::gettime ;
this指针是编译系统自动实现的。
本文详细介绍了C++中构造函数与析构函数的概念及其使用方法,包括构造函数的重载、默认参数设置,以及析构函数的作用与执行时机等关键知识点。

3293

被折叠的 条评论
为什么被折叠?



