版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《钢的奥氏体化相变原理与工艺控制》-大学本科材料科学与工程专业三年级专业课教案
- 压疮护理中的持续质量改进
- 河北联考2026年试题及答案
- 草木染·东方色-小学三年级美术跨学科主题式学习教案
- 本科护理学专业《医院职业暴露风险评估》教学设计
- 本科二年级中药学专业《天然药物化学》第六章“黄酮类化合物的结构与分类”创新教学设计
- 《解构与重塑:在跨学科阅读中培育高阶创新思维》教学设计(大学本科一年级通识教育核心课程)
- 第一单元第1课《古典之光》课件湘美版初中美术八年级下册
- 抗体药物偶联物(ADC)整合入早期乳腺癌的治疗管理总结2026
- 八年级化学第四单元《自然界的水》专业知识清单
- 中国眩晕诊疗指南(2026版)
- 国家中医药管理局《中医药事业发展“十五五”规划》全文
- 2024年35kv架空线路施工合同技术规定
- 山水林田湖草生态保护修复规划技术规范DB41-T 1991-2020
- 中医基础理论(一)
- 兽医检验模拟试题含参考答案
- 国开本科《中国当代文学专题》形考任务3试题及答案
- GB/T 6568-2024带电作业用屏蔽服装
- 产品含量报告模板
- 初中八年级物理课件-开学第一课
- 2023年7月国开电大本科中国现代文学专题期末考试试题及答案
评论
0/150
提交评论