C教程第章类与对象类之间的对象关系对.docVIP

  • 8
  • 0
  • 约4.59千字
  • 约 5页
  • 2017-02-04 发布于北京
  • 举报

C教程第章类与对象类之间的对象关系对.doc

C教程第章类与对象类之间的对象关系对

7章 类与对象 7.1 类和对象(定义及使用)初步 7.2成员函数的重载 7.3 对象的初始化、构造函数与析构函数 7. 4 类的定义及其使用 7. 5 类的静态成员及常量成员 7. 6 友元 7. 7 类之间的对象关系 对象成员和嵌套 7. 7.1 对象成员 对象成员:定义一个新类时,把一个已定义类的对象作为该类的成员,称为对象成员。 对于含有对象成员的对象,在对该对象进行初始化之前,首先要对该对象中对象成员进行初始化,这要通过调用对象成员的构造函数来实现。当类中含有对象成员时,通常采用“初始化成员列表”的方法向对象成员的构造函数传递实参。 初始化成员列表的一般格式: 类名(参数表0) :c1(参数表1)〈〈,c2(参数表2),c3(参数表3)---cn(参数表n) 〉〉 { - - - } //构造函数体 1、冒号后面的部分成为初始化成员列表; 2、c1、--- 、cn即可以为对象成员名,也可以为基本数据类型的成员数据。 1)当c1、--- 、cn为对象成员时,其后的参数表为向对象成员所在类的构造函数所提供的参数(实参),这些参数(实参)是由参数表0中的参数与其他常量或有确定值的变量一起组成的表达式。 如:在对对象成员ck进行初始化时,根据参数表k中的参数的个数和类型确定所要调用的构造函数版本。 如果某个对象成员没有出现在初始化成员列表中,则初始化该成员时,调用其所在类中的具有默认参数的构造函数。 2)当c1、--- 、cn为基本数据类型的成员时,则其后的参数表为该成员的初始值。 但如果在构造函数体中又对该成员数据设置初始值,则构造函数体中的值为最终值。 注意:只能使用初始化成员列表的方法初始化const成员数据,如果改用构造函数将出错。 3)类中定义的对象成员与在类外的定义对象不同,后者意味着对象创建;类中的对象成员说明并不直接与对象的创建和初始化相联系,要等所在的类的对象被创建时(通过构造函数)一同被创建。 3.对对象成员初始化的顺序取决于这些对象成员在类中说明的顺序,即先说明先调用,与 它们在成员化列表中的顺序无关。 4.在创建具有对象成员的类的对象时,先按对象成员的先后次序调用各个对象成员的构造 函数,然后才调用这个类本身的构造函数。 5.析构函数的调用顺序与构造函数相反。 7. 7.2 对象成员举例 例1:分析程序的输出结果 # include iostream.h class A { int x ,y ; public: A ( ) { } A(int a , int b) { x=a ; y=b ; cout“调用类A的构造函数!”endl ;} void show ( ) { cout”x=”x’\t’”y=”y’\n’ ;} ~ A( ){cout”调用类A析构函数!“endl ;} }; class B { int Length , width ; public : B( ) { } B( int a , int b) { Length = a ; Width = b ; cout”调用了类B的构造函数!”endl ;} void show ( ) { cout ”Length=”Length’\t’”width=”Width’\n’ ;} ~ B ( ) {cout”调用类B的析构函数!\n “ ; } }; class C { int r , High ; A al ; //D B b1 ; //E public : C(int a , int b ,int c ,int d ) : a1 (c,d) ,b1(500 ,600) //F { r=a ; High=b ; cout”调用了类C的构造函数!” end1 ; } void show ( ) { cout”r=”r’\t’”High=”High’\n’ ; al.show ( ) ; //注意:a1.show必须是公有成员函数,若是私有的,则错误。 b1.show( ) ; //同理 } ~ c ( ) {cout”调用类C的析构函数!\n “ ;} } ; void main (void ) { C c1 (100 ,200 , 300 ,400) ; //G c1.show ( ) ; } 运行该程序,输出结果为: 调用了

文档评论(0)

1亿VIP精品文档

相关文档