欢迎来到天天文库
浏览记录
ID:42458518
大小:843.28 KB
页数:46页
时间:2019-09-15
《C++程序设计(第3版)谭浩强-第9章》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、C++程序设计第3篇基于对象的程序设计第9章怎样使用类和对象铜陵学院汪永生目录9.1利用构造函数对类对象进行初始化9.2析构函数9.3调用构造函数和析构函数的顺序9.4对象数组9.5对象指针9.6共用数据的保护9.7对象的动态建立和释放9.8对象的赋值和复制9.9静态成员9.10友元9.11类模板第9章怎样使用类和对象9.1利用构造函数对类对象进行初始化9.1.1对象的初始化在基于对象的程序中,在定义一个对象时,需要作初始化工作,即对数据成员赋初值。错误!类并不是一个实体,而是一种抽象类型,并不占存储空间,无处容纳数据。类中成员都是公用的情况下,可以在定义对象时对数
2、据成员进行初始化。但如果类中有private或protected成员时,则不能用该方法进行初始化。第9章怎样使用类和对象9.1.2用构造函数实现数据成员的初始化C++提供构造函数(constructor)来处理对象的初始化。构造函数是一种特殊的成员函数,与其他函数不同,不需要用户来调用它,而是在建立对象时自动执行。构造函数特点:(1)与类同名;(2)不具有任何类型;(3)不返回任何值。例9.1在例8.3的基础上,用构造函数为对象的数据成员赋初值。第9章怎样使用类和对象9.1.2用构造函数实现数据成员的初始化构造函数也可以在类内声明类外定义。如上例可改为:有关构造函数
3、使用的几点说明:(1)在建立类对象时会自动调用构造函数,每建立一个对象,就调用一次构造函数。(2)构造函数没有返回值,因此它也没有类型,它的作用只是对对象进行初始化。(3)构造函数不需要用户调用,也不能被用户调用。(4)可以用一个类对象初始化另一个类对象。(5)在构造函数的函数体中不仅可以对数据成员赋初值,而且可以包含其他语句。(6)如果用户自己没有定义构造函数,则C++系统会自动生成一个构造函数,该函数体是空的,没有参数,也不执行初始化操作。第9章怎样使用类和对象9.1.3带参数的构造函数带参数构造函数首部的一般形式为:构造函数名(类型1形参,类型2形参,…)定义
4、对象的一般形式为:类名对象名(实参1,实参2,…)注:建立对象时把实参的值传递给构造函数相应的形参,把它们作为数据成员的初值。例9.2有两个长方柱,其高、宽、长分别为(1)12,20,25;(2)10,14,20。求它们的体积。编写一个基于对象的程序,在类中用带参数的构造函数对数据成员初始化。第9章怎样使用类和对象9.1.4用参数初始化表对数据成员初始化带有参数初始化表的构造函数的一般形式:类名::构造函数名([参数表])[:成员初始化表]{[构造函数体]}注:(1)其中方括号内为可选项(可有可无)。(2)如果数据成员是数组,则应在构造函数体中用语句对其赋值,而不能
5、在参数初始化表中对其初始化。例如:定义对象:Studentstud(10101,’m’,”Wangli”);第9章怎样使用类和对象9.1.5构造函数的重载在一个类中可以定义多个构造函数,以便为对象提供不同的初始化的方法,供用户选用。这些构造函数具有相同的名字,而参数的个数或参数的类型不相同,这被称为构造函数的重载。例9.3在例9.2的基础上,定义两个构造函数,其中一个无参数,一个有参数。第9章怎样使用类和对象9.1.5构造函数的重载说明:(1)在建立对象时不必给出实参的构造函数,称为默认构造函数。显然,无参构造函数属于默认构造函数。一个类只能有一个默认的构造函数。如
6、果用户未定义构造函数,系统则会自动提供一个默认构造函数,但它的函数体是空的,不起初始化作用。如果用户希望在创建对象时就能使数据成员有初值,就必须自己定义构造函数。(2)如果在建立对象时选用的是无参构造函数,应注意正确书定定义对象的语句。(3)一个类中可以包含多个构造函数,但对于每一个对象来说,建立对象时只执行一个构造函数,并非每个构造函数都被执行。Boxbox1;//建立对象的正确形式Boxbox1();//错误形式第9章怎样使用类和对象9.1.6使用默认参数的构造函数构造函数中参数的值既可以通过实参传递,也可以指定为某些默认值,即如果用户不指定实参值,编译系统就使
7、形参默认值。例9.4将例9.3程序中的构造函数改用含默认值的参数,宽、高、长的默认值均为10。编写程序:运行结果:第9章怎样使用类和对象9.1.6使用默认参数的构造函数说明:(1)应在声明构造函数时指定默认值,而不能只在定义构造函数时指定默认值。(2)声明构造函数时,形参名可以省略。如:Box(int=10,int=10,int=10);(3)如果构造函数的全部参数都指定了默认值,则在定义对象时可以给一个或几个实参,也可以不给出实参。全部参数都指定了默认值的构造函数也属于默认构造函数。一个类只能有一个默认构造函数,即可以不用参数而调用的构造函数,一个类只能有一个
此文档下载收益归作者所有