构造函数是特殊的成员函数,它的功能是在创建对象时,由系统自动调用,为对象分配内存地址空间,并对数据成员初始化。
构造函数有如下特点:
(1)构造函数是类的成员函数;
(2)构造函数的函数名与类名相同,且无返回值类型,但函数体内可以有return语句来控制程序的流程;
(3)构造函数可以重载;
(4)构造函数的访问控制符是public的,否则无法创建对象;
(5)在创建对象时,系统自动调用构造函数,不能通过对象调用构造函数;
(6)如果用户没有提供构造函数,则系统添加默认无参数的构造函数对对象初始化,若用户已经添加构造函数,则系统不再提供默认无参构造函数;
(7)与变量定义类似,如果使用默认构造函数创建对象,当创建全局对象或静态对象时,对象数据成员的值为0,否则对象数据成员的值不确定,是随机的值。(www.daowen.com)
用户自定义构造函数可以有参数,也可以没有参数。例如,在下面的程序段中定义一个类Book,它的构造函数没有参数。
当创建该类对象时,例如Book b,在执行到此语句时,系统调用构造函数,只输出一行信息:“构造了一个无参数的Book对象!”无参数构造对象时,对象的定义和变量类似。
构造函数只能在声明对象时调用,不能通过对象名加点的方式调用,所有构造函数的实际参数直接放在声明对象名后用圆括号包括起来。
在设计类时,一般是用户自定义构造函数,在构造函数内对数据成员进行初始化以及完成其他特殊的初始化工作,不采用系统默认的构造函数。
【例2.8】定义一个图书类,通过构造函数对图书对象的出版社、类型和名称进行赋予初始值,如电子科技大学出版社,计算机,面向对象程序设计,并输出这些信息。
在例2.8的main函数中,通过构造函数构造了book对象,系统首先给对象分配地址空间,然后对数据成员初始化。在声明book对象时,除了写出对象名称外,还给对象传递了三个参数,调用了构造函数创建了对象。
在例2.8的main函数中,如果把代码“My Book book("C++程序设计","计算机类","电子科技大学出版社");”写成“MyBook("C++程序设计","计算机类","电子科技大学出版社");”,则表示创建一个无名对象。C++中直接调用构造函数产生无名对象,无名对象一般可以作为实参传递给函数,也可以用来初始化一个引用的声明。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。