《《计算机网络原理》第5章-特殊函数和成员-精选课件.pptx》由会员分享,可在线阅读,更多相关《《计算机网络原理》第5章-特殊函数和成员-精选课件.pptx(50页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第5章特殊函数和成员章特殊函数和成员5.1对象成员的初始化对象成员的初始化类的定义类的定义:5.1对象成员的初始化对象成员的初始化5.1对象成员的初始化对象成员的初始化5.1对象成员的初始化对象成员的初始化示例示例【5.1】double 变成了其他类变成了其他类l#includelusing namespace std;lclass objectlprivate:lint val;lpublic:lobject():val(0)lcoutDefault constructor for objectendl;lobject(int i):val(i)llcoutconstructor for
2、objectvalendl;llobject()llcoutDestructor for objectvalendl;ll;lclass containerlprivate:lobject one;lobject two;lint data;lpublic:lcontainer():data()lcoutDefault constructor for containerendl;lcontainer(int i,int j,int k);lcontainer()llcoutDestructor for containerdataendl;ll;lcontainer:container(int
3、i,int j,int k):two(i),one(j)lldata=k;lcoutConstructor for containerdataendl;llvoid main()llcontainer obj,anobj(5,6,10);l5.2静态成员静态成员成员定义时使用了成员定义时使用了成员定义时使用了成员定义时使用了staticstatic关键字关键字关键字关键字1)1)静态成员变量的初始化只能在类外进行静态成员变量的初始化只能在类外进行静态成员变量的初始化只能在类外进行静态成员变量的初始化只能在类外进行.2)2)类中的任何成员函数都可访问静态成员变量类中的任何成员函数都可访问静态成员
4、变量类中的任何成员函数都可访问静态成员变量类中的任何成员函数都可访问静态成员变量3)3)访问静态成员时访问静态成员时访问静态成员时访问静态成员时,一般加上类名限定一般加上类名限定一般加上类名限定一般加上类名限定.4)4)静态成员变量是类的成员静态成员变量是类的成员静态成员变量是类的成员静态成员变量是类的成员,不是对象的成员不是对象的成员不是对象的成员不是对象的成员.5)5)对象未建立之前静态成员已经存在对象未建立之前静态成员已经存在对象未建立之前静态成员已经存在对象未建立之前静态成员已经存在.6)6)静态成员没有静态成员没有静态成员没有静态成员没有thisthis指针指针指针指针,除非使用引用
5、方式否则不能存取类的成除非使用引用方式否则不能存取类的成除非使用引用方式否则不能存取类的成除非使用引用方式否则不能存取类的成员员员员.lclass testlstatic int x;lint n;lpublic:ltest()ltest(int a,int b)x=a;n=b;lstatic int func()return x;lstatic void sfunc(test&r,int a)r.n=a;lint getn()return n;int test:x=25;#include using namespace std;void main()couttest:func();test
6、b,c;b.sfunc(b,58);cout b.getn();cout b.func();cout c.func();test a(24,56);cout a.func()b.func()c.func()endl;class testpublic:static int x;int n;test()test(int a,int b)x=a;n=b;int test:x=30;#include using namespace std;void main()test a(25,46),b(35,27);couta.xendl;coutb.xshow()通过指针可以使用对象数组元素的成员通过指针可以
7、使用对象数组元素的成员Pa;a0.show();p-show();5.5数组和类数组和类定义对象的指针数组定义对象的指针数组int*p;表示定义一个指针变量表示定义一个指针变量int p5;表示定义一个数组表示定义一个数组.int*p5 表示定义一个数组中有表示定义一个数组中有5个元素个元素,每个元每个元素是一个指针素是一个指针.此类数组称为指针数组此类数组称为指针数组.point*p;p=new point;p=new point(1,2);5.5数组和类数组和类定义对象的指针数组定义对象的指针数组point*p3;p0=new point(1,2);p1=new point(3,4);p2
8、=new point(5,6);通过通过p0使用使用p0指向的对象指向的对象.p0-show();可通过循环使用可通过循环使用pi指向的对象指向的对象.5.5数组和类数组和类定义指向对象的指针数组定义指向对象的指针数组,并初始化并初始化.point*p3=new point(1,2),new point(3,4),new point(5,6);5.6指向成员函数的指针指向成员函数的指针函数被调用时需要调入内存函数被调用时需要调入内存函数有地址函数有地址:存放函数的内存单元的首地址存放函数的内存单元的首地址指针可以存放地址指针可以存放地址存放函数地址的指针称为指向函数的指针存放函数地址的指针称为
9、指向函数的指针定义形式定义形式:类型类型(*指针名指针名)(参数类型参数类型);5.6指向成员函数的指针指向成员函数的指针int max(int a,int b)return ab?a:b;void main()int(*p)(int,int);p=max;(*p)(1,2);5.6指向成员函数的指针指向成员函数的指针若若若若maxmax函数是某类函数是某类函数是某类函数是某类A A的成员函数则的成员函数则的成员函数则的成员函数则:int A:max(int a,int b)int A:max(int a,int b)return ab?a:b;return ab?a:b;void main(
10、)void main()int(A:*p)(int,int);int(A:*p)(int,int);A a;A a;p=A:max;p=A:max;a.(*p)(1,2);a.(*p)(1,2);5.7求解一元二次方程求解一元二次方程利用利用C实现实现设计类设计类,定义类定义类,定义定义main函数函数定义对象定义对象,利用对象调用成员函数利用对象调用成员函数执行执行设计类设计类类的对象中应能存放相关数据类的对象中应能存放相关数据类的对象中应能存放相关数据类的对象中应能存放相关数据:具有数据成员具有数据成员具有数据成员具有数据成员a,b,ca,b,c一元二次方程的三个系数一元二次方程的三个系数
11、一元二次方程的三个系数一元二次方程的三个系数x1,x2x1,x2存放求得的方程解存放求得的方程解存放求得的方程解存放求得的方程解deltadelta存放存放存放存放b*b-4*a*cb*b-4*a*c类的对象应能完成计算功能类的对象应能完成计算功能类的对象应能完成计算功能类的对象应能完成计算功能:具有成员函数具有成员函数具有成员函数具有成员函数1)1)将数据存入数据成员的函数将数据存入数据成员的函数将数据存入数据成员的函数将数据存入数据成员的函数2)2)显示结果的函数显示结果的函数显示结果的函数显示结果的函数3)3)计算计算计算计算x1,x2x1,x2的函数的函数的函数的函数定义类定义类设计类
12、设计类定义类的定义类的成员函数成员函数main函数函数main函数函数main函数函数main函数函数main函数函数第五章复习第五章复习构造函数定义构造函数定义:class A int apublic:A(int x):a(x)A(int x)a=x;const限定的数据成员初始化必须用限定的数据成员初始化必须用?形式形式?还有什么数据成员必须用此种形式初始化?还有什么数据成员必须用此种形式初始化?const限定的数据成员和限定的数据成员和引用数据成员初始化必须引用数据成员初始化必须使用初始化列表形式使用初始化列表形式.静态成员静态成员 不依赖于对象而存在不依赖于对象而存在.静态数据成员静态
13、数据成员:定义时加定义时加static静态成员必须初始化静态成员必须初始化使用语句使用语句:int A:b=0;静态对象静态对象:static对象一旦定义存在于内存中对象一旦定义存在于内存中,直到程序结束直到程序结束才释放内存才释放内存.静态成员静态成员 不依赖于对象而存在不依赖于对象而存在.静态成员使用注意静态成员使用注意:非静态对象非静态对象 静态成员静态成员 可否使用可否使用?静态对象静态对象 静态成员静态成员 可否使用可否使用?静态对象静态对象 非静态成员非静态成员 可否使用可否使用?静态成员函数静态成员函数 非静态成员非静态成员 可否使用可否使用?非静态成员函数非静态成员函数 静态成
14、员静态成员 可否使用可否使用?静态成员静态成员 不依赖于对象而存在不依赖于对象而存在.其他注意事项其他注意事项:p108 1-7静态函数没有静态函数没有this指针指针不能声明为不能声明为virtual函数函数友元友元普通函数作友元普通函数作友元类的成员函数作友元类的成员函数作友元类作友元类作友元类类A的友元的友元(函数函数,成员函数成员函数,类类)可以访问类可以访问类A中的中的所有成员所有成员,但必须通过对象或引用来访问但必须通过对象或引用来访问.友元应在类友元应在类A中利用中利用friend声明声明const对象对象const数据成员数据成员const成员函数成员函数const指针指针co
15、nst变量变量const引用引用加加const限定后不可改变限定后不可改变,任何企图改变都导致错任何企图改变都导致错误误,并应注意他们的初始化!并应注意他们的初始化!使用规则使用规则:const对象对象 不能调用任何非不能调用任何非const成员函数成员函数const成员函数只能调用成员函数只能调用const成员函数成员函数非非const对象可以调用对象可以调用const成员函数成员函数非非const对象可以使用对象可以使用const数据成员数据成员const成员函数中不能使用任何试图改变变量值成员函数中不能使用任何试图改变变量值的语句的语句.数组和类数组和类类可以定义对象类可以定义对象类可以定义对象数组类可以定义对象数组对象数组中的每个元素都是对象对象数组中的每个元素都是对象,其使用方式和对其使用方式和对象的使用方式相同象的使用方式相同.对象数组名表示数组的首地址对象数组名表示数组的首地址可以定义指向对象的指针可以定义指向对象的指针p使其指向某个对象使其指向某个对象可以用指针可以用指针p指向数组中的元素指向数组中的元素对象的指针数组使用对象的指针数组使用函数指针定义形式函数指针定义形式:int(*p)()(int,int);int(A:*P)()(int,int);int max(int a,int b)int A:max(int a,int b)
限制150内