版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第5章特殊函数和成员5.1对象成员的初始化类的定义:5.1对象成员的初始化5.1对象成员的初始化5.1对象成员的初始化示例【5.1】double变成了其他类#include<iostream>usingnamespacestd;classobject{private: intval;public: object():val(0) {cout<<"Defaultconstructorforobject"<<endl;} object(inti):val(i) { cout<<"constructorforobject"<<val<<endl; }~object(){cout<<"Destructorforobject"<<val<<endl;}};classcontainer{private: objectone; objecttwo; intdata;public: container():data() {cout<<"Defaultconstructorforcontainer"<<endl;} container(inti,intj,intk); ~container() { cout<<"Destructorforcontainer"<<data<<endl; }};container::container(inti,intj,intk):two(i),one(j){data=k;cout<<"Constructorforcontainer"<<data<<endl;}voidmain(){containerobj,anobj(5,6,10);}5.2静态成员成员定义时使用了static关键字1)静态成员变量的初始化只能在类外进行.2)类中的任何成员函数都可访问静态成员变量3)访问静态成员时,一般加上类名限定.4)静态成员变量是类的成员,不是对象的成员.5)对象未建立之前静态成员已经存在.6)静态成员没有this指针,除非使用引用方式否则不能存取类的成员.classtest{staticintx;intn;public: test(){} test(inta,intb){x=a;n=b;} staticintfunc(){returnx;} staticvoidsfunc(test&r,inta){r.n=a;} intgetn(){returnn;}};inttest::x=25;#include<iostream>usingnamespacestd;voidmain(){ cout<<test::func(); testb,c; b.sfunc(b,58); cout<<""<<b.getn(); cout<<""<<b.func(); cout<<""<<c.func(); testa(24,56); cout<<""<<a.func()<<""<<b.func()<<""<<c.func()<<endl;}classtest{public: staticintx; intn; test(){} test(inta,intb){x=a;n=b;}};inttest::x=30;#include<iostream>usingnamespacestd;voidmain(){testa(25,46),b(35,27);cout<<a.x<<endl;cout<<b.x<<endl;}输出结果:35355.3友元函数可以实现两个类之间无限制的存取另一个类的成员.友元函数可以访问私有成员,公有成员和保护成员.友元函数可以是一个类或函数.友元需通过对象来使用类的成员.友元的三种形式:1)普通函数作一个类的友元2)a类的成员函数作b类的友元3)a类作为b类的友元5.3友元函数1)普通函数作一个类的友元例5.45.3友元函数2)a类的成员函数作b类的友元5.3友元函数2)a类的成员函数作b类的友元5.3友元函数2)a类的成员函数作b类的友元5.3友元函数3)a类作b类的友元总结:友元函数可以实现两个类之间无限制的存取另一个类的成员.友元函数可以访问私有成员,公有成员和保护成员.友元函数可以是一个类或函数.友元需通过对象来使用类的成员.友元的三种形式:1)普通函数作一个类的友元2)a类的成员函数作b类的友元3)a类作为b类的友元5.4const对象const可限定变量、指针、对象、函数、数据成员、成员函数.表示不可改变.1)const成员2)const对象3)const函数const成员区别于const变量const变量定义时需要初始化.const成员在构造函数中初始化(初始化列表形式)5.4const对象1)const成员区别于const变量5.4const对象1)const成员区别于const变量5.4const对象2)const引用作参数5.4const对象3)const对象和const函数const对象只能调用const成员函数const函数中不允许使用改变变量或成员值的语句5.5数组和类类可定义对象数组.inta[5];
inta[5]={1,2,3,4,5};pointp[3];pointp[3]={point(1,2),point(3,4),point(5,6)}定义数组时未初始化调用point()形式构造函数定义数组并初始化调用point(a,b)形式构造函数使用数组中的元素时利用:point[i]形式Point[i]的使用同普通对象使用方式相同5.5数组和类类可定义对象数组,可定义指向对象的指针数组名是数组在内存中的首地址指针可以存放地址可用指针指向数组通过指针可以使用对象成员p->show()通过指针可以使用对象数组元素的成员P=a;a[0].show();p->show();5.5数组和类定义对象的指针数组int*p;表示定义一个指针变量intp[5];表示定义一个数组.int*p[5]表示定义一个数组中有5个元素,每个元素是一个指针.此类数组称为指针数组.point*p;p=newpoint;p=newpoint(1,2);5.5数组和类定义对象的指针数组point*p[3];p[0]=newpoint(1,2);p[1]=newpoint(3,4);p[2]=newpoint(5,6);通过p[0]使用p[0]指向的对象.p[0]->show();可通过循环使用p[i]指向的对象.5.5数组和类定义指向对象的指针数组,并初始化.point*p[3]={newpoint(1,2),newpoint(3,4),newpoint(5,6)};5.6指向成员函数的指针函数被调用时需要调入内存函数有地址:存放函数的内存单元的首地址指针可以存放地址存放函数地址的指针称为指向函数的指针定义形式:类型(*指针名)(参数类型);5.6指向成员函数的指针intmax(inta,intb){returna>b?a:b;}voidmain(){ int(*p)(int,int); p=max; (*p)(1,2);}5.6指向成员函数的指针若max函数是某类A的成员函数则:intA::max(inta,intb){returna>b?a:b;}voidmain(){ int(A::*p)(int,int);Aa; p=A::max; a.(*p)(1,2);}5.7求解一元二次方程利用C++实现设计类,定义类,定义main函数定义对象,利用对象调用成员函数执行设计类类的对象中应能存放相关数据:具有数据成员a,b,c一元二次方程的三个系数x1,x2存放求得的方程解delta存放b*b-4*a*c类的对象应能完成计算功能:具有成员函数1)将数据存入数据成员的函数2)显示结果的函数3)计算x1,x2的函数定义类设计类定义类的成员函数main函数main函数main函数main函数main函数第五章复习构造函数定义:classA{intapublic:
A(intx):a(x){}A(intx){a=x;}}const限定的数据成员初始化必须用?形式?还有什么数据成员必须用此种形式初始化??const限定的数据成员和引用数据成员初始化必须使用初始化列表形式.静态成员不依赖于对象而存在.静态数据成员:定义时加static静态成员必须初始化使用语句:intA::b=0;静态对象:static对象一旦定义存在于内存中,直到程序结束才释放内存.静态成员不依赖于对象而存在.静态成员使用注意:非静态对象静态成员可否使用?静态对象静态成员可否使用?静态对象非静态成员可否使用?静态成员函数非静态成员可否使用?非静态成员函数静态成员可否使用?静态成员不依赖于对象而存在.其他注意事项:
p1081-7静态函数没有this指针不能声明为virtual函数友元普通函数作友元类的成员函数作友元类作友元类A的友元(函数,成员函数,类)可以访问类A中的所有成员,但必须通过对象或引用来访问.友元应在类A中利用friend声明const对象const数据成员const成员函数const指针const变量const引用加const限定后不可改变,任何企图改变都导致错误,并应注意他们的初始化!!使用规则:const对象不能调用任何非const成员函数const成员函数只能调用const成员函数非const对象可以调用const成员函数非const对象可以使用const数据成员const成员函数中不能使用任
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 44896-2024新闻出版知识服务知识体系建设与应用
- 2024年度不锈钢扶手定制设计与制造合同
- 2024年度绿化与清洁服务合同
- 2024年度企业销售团队劳动合同范本(2024版)
- 子夜课件教学
- 2024年度经销合同模板
- 2024年度艺术品买卖与展览合同协议
- 2024年度粮食仓储物流市场开发与合作合同
- 2024年度环保工程沉降观测合同
- 购车决策洞察报告之动力篇(2024版)-新动力诉求强劲 建议降低汽车消费税
- 2022版义务教育(道德与法治)课程标准(含2022年修订部分)
- 第二思维找主体词
- 05 02 第五章第二节 吸收借鉴优秀道德成果
- 动物模型课件
- is620p系列伺服用户手册-v0.2综合版
- “说优点、讲不足”主题班会
- 健康体检知情同意书-2
- 幼儿园《小壁虎借尾巴》课件
- 血透腹透优缺点课件
- 三年级上册数学课件-7.2 认识几分之一丨苏教版 (共28张PPT)
- 内分泌性高血压规范化诊断和治疗
评论
0/150
提交评论