




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1 构造函数和析构函数构造函数和析构函数2构造函数和析构函数是在类体中说明的两种构造函数和析构函数是在类体中说明的两种特殊的成员函数特殊的成员函数。构造函数是在创建对象时,使用给定的值来构造函数是在创建对象时,使用给定的值来将对象初始化。将对象初始化。析构函数的功能正好相反,是在系统释放对析构函数的功能正好相反,是在系统释放对象前,对对象做一些善后工作象前,对对象做一些善后工作。3构造函数是类的成员函数,系统约定构造函构造函数是类的成员函数,系统约定构造函数名必须与类名相同。数名必须与类名相同。构造函数提供了初始构造函数提供了初始化对象的一种简单的方法化对象的一种简单的方法。构造函数构造函数可
2、以带参数、可以重载可以带参数、可以重载,同时没有,同时没有返回值。返回值。4class Afloat x,y;public:A(float a,float b) x=a; y=b;/构造函数,初始化对象构造函数,初始化对象float Sum(void) return x+y; void Set(float a,float b) x=a;y=b;Print(void) coutx=xty=yendl;void main(void)A a1(2.0, 3.0);/定义时调用构造函数初始化定义时调用构造函数初始化A a2(1.0,2.0);a2.Set(10.0, 20.0); /利用成员函数重新为
3、对象赋值利用成员函数重新为对象赋值 a1.Print();a2.Print();5对构造函数,说明以下几点:对构造函数,说明以下几点:1.构造函数的函数名必须与类名相同构造函数的函数名必须与类名相同。构造构造函数的主要作用是完成初始化对象的数据成函数的主要作用是完成初始化对象的数据成员以及其它的初始化工作员以及其它的初始化工作。2. 在定义构造函数时,在定义构造函数时,不能指定函数返回值不能指定函数返回值的类型,也不能指定为的类型,也不能指定为void类型类型。3. 一个类可以定义若干个构造函数。当定义一个类可以定义若干个构造函数。当定义多个构造函数时,多个构造函数时,必须满足函数重载的原则。
4、必须满足函数重载的原则。64.构造函数可以指定参数的缺省值。构造函数可以指定参数的缺省值。5.若定义的类要说明该类的对象时,构造函若定义的类要说明该类的对象时,构造函数必须是数必须是公有的成员函数公有的成员函数。如果定义的类仅。如果定义的类仅用于派生其它类时,则可将构造函数定义为用于派生其它类时,则可将构造函数定义为保护的成员函数保护的成员函数。由于构造函数属于类的成员函数,它对私有由于构造函数属于类的成员函数,它对私有数据成员、保护的数据成员和公有的数据成数据成员、保护的数据成员和公有的数据成员员均能进行初始化均能进行初始化。7class Afloat x,y;public:A(float
5、a, float b=10) x=a; y=b; A() x=0; y=0; void Print(void) coutxtyendl; ;void main(void) A a1, a2(20.0), a3(3.0, 7.0); a1.Print(); a2.Print(); a3.Print(); 00201037带缺省参数的构造函数带缺省参数的构造函数不带参数的构造函数不带参数的构造函数每一个对象必每一个对象必须要有相应的须要有相应的构造函数构造函数8每一个对象必须要有相应的构造函数每一个对象必须要有相应的构造函数若没有显式定义构造函数,若没有显式定义构造函数,系统默认缺省的构造函数。系
6、统默认缺省的构造函数。class Afloat x,y;public:A() void Print(void) coutxtyendl; ;隐含的缺省的构造函数隐含的缺省的构造函数A a1, a2;只允许这样定义对象只允许这样定义对象对象开辟了空间,但没有初始化对象开辟了空间,但没有初始化9对局部对象,静态对象,全局对象的初始化对局部对象,静态对象,全局对象的初始化对于局部对象,每次定义对象时,都要调用对于局部对象,每次定义对象时,都要调用构造函数。构造函数。对于静态对象,是在首次定义对象时,调用对于静态对象,是在首次定义对象时,调用构造函数的,且由于对象一直存在,构造函数的,且由于对象一直存
7、在,只调用只调用一次构造函数一次构造函数。对于全局对象,是对于全局对象,是在在main函数执行之前调用函数执行之前调用构造函数的构造函数的。10class A int x,y; public: A(int a) x=a; cout“1n”; A(int a, int b) x=a,y=b;cout“2n”;A a1(3);void f(void) A b(2,3);void main(void) A a2(4,5); f(); f();122211class Afloat x,y;public: A(float a, float b)x=a;y=b;cout初始化自动局部对象初始化自动局部对象
8、n; A() x=0; y=0; cout初始化静态局部对象初始化静态局部对象n; A(float a) x=a; y=0; cout初始化全局对象初始化全局对象n; void Print(void) coutxtyendl; ;A a0(100.0);/定义全局对象定义全局对象void f(void) cout 进入进入f()函数函数n;A a2(1,2); static A a3; /初始化局部静态对象初始化局部静态对象 void main(void) cout进入进入main函数函数n; A a1(3.0, 7.0);/定义局部自动对象定义局部自动对象 f(); f(); 初始化全局对象
9、初始化全局对象进入进入main函数函数初始化自动局部对象初始化自动局部对象进入进入f()函数函数初始化局部静态变量初始化局部静态变量进入进入f()函数函数初始化自动局部对象初始化自动局部对象初始化自动局部对象初始化自动局部对象12缺省的构造函数缺省的构造函数 在定义类时,若没有定义类的构造函数,则编在定义类时,若没有定义类的构造函数,则编译器译器自动自动产生一个缺省的构造函数,其格式为:产生一个缺省的构造函数,其格式为:className:className() 缺省的构造函数并不对所产生对象的数据成员缺省的构造函数并不对所产生对象的数据成员赋初值赋初值;即;即新产生对象的数据成员的值是不确定
10、新产生对象的数据成员的值是不确定的。的。 13class Afloat x,y;public:A()/缺省的构造函数,编译器自动产生缺省的构造函数,编译器自动产生,可以不写可以不写float Sum(void) return x+y; void Set(float a,float b) x=a;y=b; void Print(void) coutx=xty=yendl; ;void main(void)A a1,a2;/产生对象时,自动调用缺省的构造函数,不赋值产生对象时,自动调用缺省的构造函数,不赋值a1.Set (2.0,4.0);couta1: ; a1.Print ();couta1.
11、sum=a1.Sum ()endl;a2.Print();/打印随机值打印随机值14关于缺省的构造函数,说明以下几点:关于缺省的构造函数,说明以下几点:1、在定义类时,、在定义类时,只要只要显式显式定义了一个类的构定义了一个类的构造函数,则编译器就不产生缺省的构造函数造函数,则编译器就不产生缺省的构造函数2、所有的对象在定义时,必须调用构造函数所有的对象在定义时,必须调用构造函数不存在没有构造函数的对象!不存在没有构造函数的对象!15class Afloat x,y;public: A(float a,float b)x=a; y=b; void Print(void)coutxtyendl;
12、 ;void main(void)A a1;A a2(3.0,30.0);显式定义了构造函数,不显式定义了构造函数,不产生缺省的构造函数产生缺省的构造函数error,定义时,没有定义时,没有构造函数可供调用构造函数可供调用163、在类中,若定义了没有参数的构造函数,或、在类中,若定义了没有参数的构造函数,或各参数均有缺省值的构造函数也称为缺省的构造各参数均有缺省值的构造函数也称为缺省的构造函数,函数,缺省的构造函数只能有一个。缺省的构造函数只能有一个。4、产生对象时,系统必定要调用构造函数。、产生对象时,系统必定要调用构造函数。所以所以任一对象的构造函数必须唯一任一对象的构造函数必须唯一。17
13、class Afloat x,y;public: A(float a=10,float b=20)x=a; y=b; A() void Print(void)coutxtyendl; ;void main(void)A a1;A a2(3.0,30.0);两个函数均为缺两个函数均为缺省的构造函数省的构造函数两个构造函数均可供调用,构造函数不唯一两个构造函数均可供调用,构造函数不唯一18构造函数与构造函数与new运算符运算符 可以使用可以使用new运算符来运算符来动态地动态地建立对象。建立建立对象。建立时时要自动调用构造函数要自动调用构造函数,以便完成初始化对象的,以便完成初始化对象的数据成员。
14、最后返回这个动态对象的起始地址。数据成员。最后返回这个动态对象的起始地址。用用new运算符产生的动态对象,在不再使用这运算符产生的动态对象,在不再使用这种对象时,必须用种对象时,必须用delete运算符来释放对象所占用运算符来释放对象所占用的存储空间。的存储空间。 用用new建立类的对象时,可以使用参数初始化建立类的对象时,可以使用参数初始化动态空间。动态空间。 19class Afloat x,y;public:A(float a, float b)x=a;y=b;A()x=0; y=0;void Print(void) coutxtyPrint(); pa2-Print(); delete
15、 pa1; /用用delete释放空间释放空间 delete pa2; /用用delete释放空间释放空间3 50 020析构函数析构函数 析构函数的作用与构造函数正好相反,析构函数的作用与构造函数正好相反,是在对象的生是在对象的生命期结束时,释放系统为对象所分配的空间,即要撤消一命期结束时,释放系统为对象所分配的空间,即要撤消一个对象。个对象。析构函数也是类的成员函数,定义析构函数的格式为:析构函数也是类的成员函数,定义析构函数的格式为:ClassName:ClassName( ) ./ 函数体函数体; 21析构析构 函数的特点如下:函数的特点如下:1、析构函数是、析构函数是成员函数成员函数
16、,函数体可写在类体内,函数体可写在类体内,也可写在类体外。也可写在类体外。2、析构函数是一个特殊的成员函数,函数名必须析构函数是一个特殊的成员函数,函数名必须与类名相同,并在其与类名相同,并在其前面加上字符前面加上字符“”,以便和构,以便和构造函数名相区别造函数名相区别。3、析构函数、析构函数不能带有任何参数,不能有返回值,不能带有任何参数,不能有返回值,不指定函数类型。不指定函数类型。22在程序的执行过程中,当遇到某一对象的生存期在程序的执行过程中,当遇到某一对象的生存期结束时,系统自动调用析构函数,然后再收回为结束时,系统自动调用析构函数,然后再收回为对象分配的存储空间。对象分配的存储空间
17、。4、一个类中,只能定义一个析构函数,、一个类中,只能定义一个析构函数,析构函数析构函数不允许重载。不允许重载。5、析构函数是在撤消对象时由系统自动调用的。、析构函数是在撤消对象时由系统自动调用的。23class Afloat x,y;public: A(float a,float b) x=a;y=b;cout调用非缺省的构造函数调用非缺省的构造函数n; A() x=0; y=0; cout调用缺省的构造函数调用缺省的构造函数n ; A() cout调用析构函数调用析构函数n; void Print(void) coutxtyendl; ;void main(void)A a1; A a2(
18、3.0,30.0);cout退出主函数退出主函数n;调用缺省的构造函数调用缺省的构造函数调用非缺省的构造函数调用非缺省的构造函数退出主函数退出主函数调用析构函数调用析构函数调用析构函数调用析构函数24 在程序的执行过程中,对象如果用在程序的执行过程中,对象如果用new运算符开辟了空间,则在类中运算符开辟了空间,则在类中应该应该定义定义一个析构函数,并在析构函数中使用一个析构函数,并在析构函数中使用delete删除由删除由new分配的内存空间。分配的内存空间。因为在撤消对因为在撤消对象时,系统自动收回为对象所分配的存储空象时,系统自动收回为对象所分配的存储空间,而不能自动收回由间,而不能自动收回
19、由new分配的动态存储分配的动态存储空间。空间。25class Strchar *Sp; int Length;public:Str(char *string) if(string)Length=strlen(string); Sp=new charLength+1;strcpy(Sp,string); else Sp=0;void Show(void) coutSpendl; Str() if(Sp)delete Sp; ;void main(void)Str s1(Study C+);s1.Show();在构造函数中将在构造函数中将成成员数据指针员数据指针指向动指向动态开辟的内存态开辟的内
20、存用初值为开辟用初值为开辟的内存赋值的内存赋值析构函数,当释析构函数,当释放对象时收回用放对象时收回用new开辟的空间开辟的空间26Study C + 0stringLength=strlen(string);Sp=new charLength+1;Spnew开辟的空间开辟的空间strcpy(Sp,string);Study C + 027用用new运算符为对象分配动态存储空间时,调运算符为对象分配动态存储空间时,调用了构造函数,用用了构造函数,用delete删除这个空间时,调用了删除这个空间时,调用了析构函数。析构函数。当使用运算符当使用运算符delete删除一个由删除一个由new动动态产生
21、的对象时,它首先调用该对象的析构函数,态产生的对象时,它首先调用该对象的析构函数,然后再释放这个对象占用的内存空间然后再释放这个对象占用的内存空间。可以用可以用new运算符为对象分配存储空间,如:运算符为对象分配存储空间,如:A *p;p=new A;这时必须用这时必须用delete才能释放这一空间。才能释放这一空间。delete p;28class Afloat x,y;public: A(float a, float b) x=a;y=b;cout调用了构造函数调用了构造函数n; void Print(void) coutxtyendl; A() cout调用了析构函数调用了析构函数n;
22、;void main(void) coutPrint(); delete pa1; /调用析构函数调用析构函数 cout退出退出main()函数函数n;进入进入main()函数函数调用了构造函数调用了构造函数35调用了析构函数调用了析构函数退出退出main()函数函数29不同存储类型的对象调用构造函数及析构函数不同存储类型的对象调用构造函数及析构函数 1、对于全局定义的对象对于全局定义的对象(在函数外定义的对象),(在函数外定义的对象),在程序开始执行时,调用构造函数;到程序结束在程序开始执行时,调用构造函数;到程序结束时,调用析构函数。时,调用析构函数。2、对于局部定义的对象对于局部定义的对
23、象(在函数内定义的对象),(在函数内定义的对象),当程序执行到定义对象的地方时,调用构造函数;当程序执行到定义对象的地方时,调用构造函数;在退出对象的作用域时,调用析构函数。在退出对象的作用域时,调用析构函数。3、用用static定义的局部对象定义的局部对象,在首次到达对象的定,在首次到达对象的定义时调用构造函数;到程序结束时,调用析构函数义时调用构造函数;到程序结束时,调用析构函数30 4、对于用对于用new运算符动态生成的对象运算符动态生成的对象,在产生对,在产生对象时调用构造函数,只有使用象时调用构造函数,只有使用delete运算符来释放运算符来释放对象时,才调用析构函数。若不使用对象时
24、,才调用析构函数。若不使用delete来撤消来撤消动态生成的对象,程序结束时,对象仍存在,并动态生成的对象,程序结束时,对象仍存在,并占用相应的存储空间,占用相应的存储空间,即系统不能自动地调用析即系统不能自动地调用析构函数来撤消动态生成的对象。构函数来撤消动态生成的对象。31class Afloat x,y;public: A(float a, float b)x=a;y=b;cout初始化自动局部对象初始化自动局部对象n; A() x=0; y=0; cout初始化静态局部对象初始化静态局部对象n; A(float a) x=a; y=0; cout初始化全局对象初始化全局对象n; A()
25、 cout“调用析构函数调用析构函数”endl; ;A a0(100.0);/定义全局对象定义全局对象void f(void) cout 进入进入f()函数函数n; A ab(10.0, 20.0);/定义局部自动对象定义局部自动对象 static A a3; /初始化局部静态对象初始化局部静态对象 void main(void) cout进入进入main函数函数n;f(); f(); 初始化全局对象初始化全局对象进入进入main函数函数初始化自动局部对象初始化自动局部对象进入进入f()函数函数初始化静态局部对象初始化静态局部对象进入进入f()函数函数初始化自动局部对象初始化自动局部对象调用析
26、构函数调用析构函数调用析构函数调用析构函数调用析构函数调用析构函数调用析构函数调用析构函数32举例:建立一个类举例:建立一个类NUM,求指定数据范围内的所有素数。,求指定数据范围内的所有素数。如:如: 定义类定义类NUM的对象的对象test,查找范围为,查找范围为100200,正,正确的输出结果:确的输出结果:num=21101 103 107 109 113127 131 33动态构造及析构对象数组动态构造及析构对象数组 用用new运算符来动态生成对象数组时,自动调用构运算符来动态生成对象数组时,自动调用构造函数,而用造函数,而用delete运算符来运算符来释放释放p1所指向的对象所指向的对
27、象数组数组占用的存储空间时,在指针变量的前面必须占用的存储空间时,在指针变量的前面必须加上加上 , 才能将数组元素所占用的空间全部释放。才能将数组元素所占用的空间全部释放。否则,只释放第否则,只释放第0个元素所占用的空间。个元素所占用的空间。pa1=new A3;. delete pa1; 34class Afloat x,y;public: A(float a=0, float b=0)x=a; y=b;cout调用了构造函数调用了构造函数n; void Print(void) coutxtyendl; A() cout调用了析构函数调用了析构函数n; ;void main(void) co
28、ut进入进入main()函数函数n; A *pa1; pa1=new A3;/开辟数组空间开辟数组空间coutn完成开辟数组空间完成开辟数组空间nn; delete pa1; /必须用必须用删除开辟的空间删除开辟的空间 cout退出退出main()函数函数n;进入进入main()函数函数调用了构造函数调用了构造函数调用了构造函数调用了构造函数调用了构造函数调用了构造函数完成开辟数组空间完成开辟数组空间调用了析构函数调用了析构函数调用了析构函数调用了析构函数调用了析构函数调用了析构函数退出退出main()函数函数35缺省的析构函数若在类的定义中没有显式地定义析构函数时,则若在类的定义中没有显式地
29、定义析构函数时,则编译器自动地产生一个缺省的析构函数,其格式编译器自动地产生一个缺省的析构函数,其格式为:为:ClassName:ClassName() ;任何对象都必须有构造函数和析构函数,但在撤任何对象都必须有构造函数和析构函数,但在撤消对象时,消对象时,要释放对象的数据成员用要释放对象的数据成员用new运算符分运算符分配的动态空间时,必须显式地定义析构函数配的动态空间时,必须显式地定义析构函数。 36实现类型转换的构造函数实现类型转换的构造函数同类型的对象可以相互赋值,相当于类中的数据同类型的对象可以相互赋值,相当于类中的数据成员相互赋值;成员相互赋值;如果如果直接将数据赋给对象直接将数
30、据赋给对象,所赋入的数据需要强,所赋入的数据需要强制类型转换,制类型转换,这种转换需要调用构造函数这种转换需要调用构造函数。37class Afloat x,y;public: A(float a,float b) x=a;y=b;cout调用构造函数调用构造函数n; A() cout调用析构函数调用析构函数n; void Print(void) coutxtyendl; ;void main(void) A a1(1.0, 10.0); a1.Print(); a1=A(3.0 , 30.0); a1.Print(); cout退出主函数退出主函数n;调用构造函数调用构造函数产生临时对象,产
31、生临时对象,初始化并赋值后初始化并赋值后立即释放立即释放1 10调用构造函数调用构造函数调用析构函数调用析构函数330退出主函数退出主函数调用析构函数调用析构函数38注意:当构造函数只有一个参数时,可以用注意:当构造函数只有一个参数时,可以用= 强制赋值强制赋值。class Bfloat x;public: B(float a) x=a; cout调用构造函数调用构造函数n; B() cout调用析构函数调用析构函数n; void Print(void) coutxendl; ;void main(void)B b1(1.0) ;b1.Print(); B b2=100; b2.Print()
32、; b1=10; b1.Print(); cout退出主函数退出主函数n;调用构造函数调用构造函数单参数可以这样赋值单参数可以这样赋值1调用构造函数调用构造函数100调用构造函数调用构造函数调用析构函数调用析构函数10退出主函数退出主函数调用析构函数调用析构函数调用析构函数调用析构函数b1=B(10)产生一个产生一个临时对象临时对象39完成拷贝功能的构造函数完成拷贝功能的构造函数 可以在定义一个对象的时候用另一个对象为其初可以在定义一个对象的时候用另一个对象为其初始化,始化,即构造函数的参数是另一个对象的引用即构造函数的参数是另一个对象的引用,这种构造函数常为完成拷贝功能的构造函数。这种构造函
33、数常为完成拷贝功能的构造函数。完成拷贝功能的构造函数的一般格式为:完成拷贝功能的构造函数的一般格式为:ClassName:ClassName(ClassName &)./ 函数体完成对应数据成员的赋值函数体完成对应数据成员的赋值40class Afloat x,y;public: A(float a=0, float b=0)x=a; y=b; A(A &a) x=a.x; y=a.y;;void main(void) A a1(1.0,2.0); A a2(a1);形参形参必须必须是同类型对象的引用是同类型对象的引用实参是同类型的对象实参是同类型的对象41class Afloat x,y;p
34、ublic: A(float a=0, float b=0)x=a; y=b;cout调用了构造函数调用了构造函数n; A(A &a) x=a.x;y=a.y;cout“调用了完成拷贝功能的构造函数调用了完成拷贝功能的构造函数n”; void Print(void) coutxtyendl; A() cout调用了析构函数调用了析构函数n; ;void main(void) A a1(1.0,2.0); A a2(a1); a1.Print(); a2.Print();调用了构造函数调用了构造函数调用了完成拷贝功能的构造函数调用了完成拷贝功能的构造函数1212调用了析构函数调用了析构函数调用了
35、析构函数调用了析构函数用已有的对象中的数据为新创建的对象赋值用已有的对象中的数据为新创建的对象赋值42如果如果没有定义没有定义完成拷贝功能的构造函数,编完成拷贝功能的构造函数,编译器译器自动自动生成一个隐含的完成拷贝功能的构生成一个隐含的完成拷贝功能的构造函数造函数,依次完成类中对应数据成员的拷贝依次完成类中对应数据成员的拷贝。 A:A(A &a) x=a.x; y=a.y; 隐含的构隐含的构造函数造函数43class Afloat x,y;public: A(float a=0, float b=0)x=a; y=b;cout调用了构造函数调用了构造函数n; void Print(void)
36、 coutxtyendl; A() cout调用了析构函数调用了析构函数n; ;void main(void) A a1(1.0,2.0); A a2(a1); A a3=a1;/可以这样赋值可以这样赋值 a1.Print(); a2.Print(); a3.Print();调用了构造函数调用了构造函数121212调用了析构函数调用了析构函数调用了析构函数调用了析构函数调用了析构函数调用了析构函数隐含了拷贝隐含了拷贝的构造函数的构造函数44由编译器为每个类产生的这种隐含的完成拷由编译器为每个类产生的这种隐含的完成拷贝功能的构造函数,依次完成类中对应数据贝功能的构造函数,依次完成类中对应数据成员
37、的拷贝。成员的拷贝。但是,当类中的数据成员中使用但是,当类中的数据成员中使用new运算符,运算符,动态地申请存储空间进行赋初值时,必须在动态地申请存储空间进行赋初值时,必须在类中类中显式显式地定义一个完成拷贝功能的构造函地定义一个完成拷贝功能的构造函数,以便正确实现数据成员的复制数,以便正确实现数据成员的复制。45class Str int Length; char *Sp;public: Str(char *string) if(string)Length=strlen(string); Sp=new charLength+1; strcpy(Sp,string); else Sp=0; v
38、oid Show(void)coutSpendl;Str()if(Sp) delete Sp;void main(void)Str s1(Study C+);Str s2(s1);s1.Show ();s2.Show ();隐含的拷贝构造函数为:隐含的拷贝构造函数为:Str:Str(Str &s)Length=s.Length;Sp=s.Sp;“Study C+”s1.Sps2.Spnew开辟开辟的空间的空间同一空间释放两次,造成运同一空间释放两次,造成运行错误。行错误。46在这种情况下,在这种情况下,必须必须要定义完成拷贝功能的构造函数。要定义完成拷贝功能的构造函数。Str:Str(Str
39、&s) if(s.Sp)Length=s.Length ;Sp=new charLength+1;strcpy(Sp,s.Sp);else Sp=0; Str s2(s1);“Study C+”s1.Sp原来原来s1开开辟的空间辟的空间“Study C+”s2.Sp拷贝函数中用拷贝函数中用new开辟的空间开辟的空间47构造函数与对象成员构造函数与对象成员对类对类A的对象初始化的同时还要对其的对象初始化的同时还要对其成员数成员数据类据类B的对象的对象进行初始化,所以,进行初始化,所以,类类A的构造的构造函数中要调用类函数中要调用类B的构造函数的构造函数。class B .;class A int
40、 x , y; B b1,b2; ;在类在类A中包含中包含类类B的对象的对象48class A float x,y;public: A(int a,int b)x=a;y=b; void Show() cout x=xty=yn; ;class Cfloat z; A a1;/类类C的数据成员为类的数据成员为类A 的对象的对象a1public: C(int a,int b,int c):a1(b, c) z=a;/类类C的对象初始化的对象初始化 void Show()cout “z=an;a1.Show(); ;void main(void)C c1(1, 2, 3 );/对类对类C的对象初始化的对象初始化c1.Show();在类在类C中调用类中调用类A的成员函数的成员函数利用类利用类A的构造函数对
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 医疗工程施工合同范例
- 原料代理采购合同范例
- 厨房橱柜工程合同范例
- 临时合伙合同范例
- 人员租聘合同范例
- 公交宣传合同范例
- 储罐借用合同范例
- 厂房承包建筑合同范例
- 加工机械租赁合同范例
- 三轮车及司机租赁合同范例
- 慢性肾衰竭的护理病例讨论
- 医疗机构医疗废物管理规范考试试题及答案
- 铁路基础知识题库单选题100道及答案解析
- 小学家长及学生投诉处理制度
- 江苏省连云港市2024-2025学年高三上册开学摸底考英语试题(附答案)
- 新时代青年的使命与担当7
- 四年级语文下册第六单元【集体备课】(教材解读+教学设计)
- 2024版义务教育小学科学课程标准
- 八年级学生学情分析-20211031092110
- 健身健美课件
- 2024关于教师的民主评议个人年度工作总结
评论
0/150
提交评论