课件-c复习语言对语言扩充和增强具体体现_第1页
课件-c复习语言对语言扩充和增强具体体现_第2页
课件-c复习语言对语言扩充和增强具体体现_第3页
课件-c复习语言对语言扩充和增强具体体现_第4页
课件-c复习语言对语言扩充和增强具体体现_第5页
已阅读5页,还剩80页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

全面兼容 和扩充支持面向对象的在C语言块注释的形式/*ExplanationSentence*/的//ExplanationSentence,即用“//”表示注释开始,从i=1;i<=100;i++); 型值的函数f,原型应该写为:intf(char,double);而C语言中允许将这个原型写成"f(;"。在函数原intf(inta,int{return}更加方便的动 分增加了内联函数(Inlinecout<<"C++isinta;进行。例如在下面的例子中,我们可以利用::实现在局部变量a的作用域范围内对全局变量a的。#include<iostream.h>inta;void{floata=::a=cout<<"localvariablea="<<a<<endl;cout<<"globalvariablea="<<::a<<endl;}localvariablea=globalvariablea=修补了C语言中的一些,提供更好的类型检查和编的一种。于该类的全部对象提供了统一的抽象描述,其包类 形class{ 在关键字private后面,只允许本类中的函数,而类外部的任何函数都不能。通俗讲是“谁都不可以使 在关键字protected后面,通俗讲是“子孙可以使用,外人不可用” 不 时初始化不 在类 内联成员函数的方式 中——隐 constclassPoint{intGetX()const;intGetY()const;voidSetPt(int,int);voidOffsetPt(int,intxVal,

intPoint::GetY(){return}加const限定。 例:ClockmyClock;的过程。是动词。对象然后赋值,经历了状态由 class{Clock(intNewH,intNewM,intvoidSetTime(intNewH,intNewM,intNewS);voidShowTime();intHour,Minute,Clock::Clock(intNewH,intNewM,int{Hour=NewH;Minute=NewM;Second=}void{Clockc(0,0,0);隐含调用构造函数,将初始值作为实参。} }delete有条件地usingnamespacestd;ClassPoint{Point(intxx,intintX,intPoint::Point(intxx,int{}{}class{public类名类名(类名&对象名)//{}class{Point(intxx=0,intyy=0){X=xx;Y=yy;}Point(Point&p);intGetX(){returnX;}intGetY(){returnintX,Point::Point(Point&{X=Y=cout拷贝构造函数被调用”}void{PointPointB(A);拷贝构造函数被调用cout<<B.GetX()<<endl;}voidfun1(Point{}void{Pointfun1(A);}Point{returnA;}void{Point}类成员 控被继承的已有类称为基类(或父类)派生出的新类称为派生类(或子类)class{新增成 –公有继承public(原封不动–保护继承protected(折中–私有继承private(化公为私继承方式影响子类 权 权 权 派生类中的成员函数可以直 通过派生类的对象只 私有继承 protected成员,但不能直 通过派生类的对象不能直 基类中的任何成员 保护继承 通过派生类的对象不能直 基类中的任何成 原来类,但隐藏、了原功能,则用私有继承。只不至于难以,则用保护继承。也是“实现继承”。继承方式 权限的区class{int

classD:public{intDB*pb=&objd;D*pd=class派生类名:继承方式1基类名1,继承方式2基类名2,...{新增成 class{voidsetA(int);voidshowA(intclassB{voidsetB(int);voidshowB(

intclassC:publicA,private{voidsetC(int,int,int);voidshowC();intvoidA::setA(int{a=x;voidB::setB(int{b=x;voidC::setC(intx,inty,int{//派生类成员直接 }

void{Cobj;obj.setB(6);obj.showB();}形参):基类名(参数表){}usingnamespacestd;classB{// B(intvoidPrint()const;int

cout<<"B'sdefaultconstructorcalled."<<endl;} cout<<"B'sconstructorcalled."<<endl; cout<<"B'sdestructorcalled."<<endl;}voidB::Print(){ classC:public{C(inti,intvoidPrint()const;int{cout<<"C'sdefault}C::C(inti,intj):{cout<<"C'sconstructor}

{cout<<“C‘sdestructor}voidC::Print(){}void{CCobj2;} #include<iostream>usingnamespacestd;classB1//基类B1{B1(inti){cout<<"constructingB1~B1(){cout<<"destructingB1classB2//基类{B2(intj){cout<<"constructingB2~B2(){cout<<"destructingB2classB3//基类{B3(){cout<<"constructingB3~B3(){cout<<"destructingB3classC:publicB2,publicB1,public{C(inta,intb,intc,intB2(a),memberB2(d),memberB1(c),B1(b){}B1memberB1;B2memberB2;B3void{Cobj(1,2,3,}constructingB2constructingB12constructingB3*constructingB1constructingB24constructingB3*destructingB3destructingB2destructingB1destructingB3destructingB1destructingB2名时,将出现对成员的不确定性——同名二义性。派生,则在此共同基类中的成员时,将产生另一种 若想启用(“捞出来”),用 class{voidclass{voidf();void

classC:publicA,public{voidvoid如 :C则c1.f而c1.g无二义性(同名覆盖解决方法一:用类名来限定c1.A::f或解决方法二:同名覆盖,再造接口在C中再 同名成员函数f(),该函数根据需要调用A::f()或B::f()是扩充性在“继承”之后的又一大表现静态绑定(静态联编 加入一个void型的指向指针的指针vptr,并让其指向一一个虚函数名,排列次序按虚函数的次序排列。#include<iostream>usingnamespacestd;classB0//基类B0{virtualvoiddisplay(){}

classB1:publicB0//公有派{void{cout<<"B1::display()"<<endl;classD1publicB1//公有派{voiddisplay(){虚函数举voidfun(B0*ptr)//普通函{ptr-}voidmain()//主函{B0b0*p;//基类对象和指B1b1;//派生类对象D1d1;//派生类对象p=&b0;p=&b1;p=&d1;fun(p);//调用派生类D1函数成}

运行结果基类的某成员函数使用了派生类的对象要使用指针 来调用该虚函数 class类名{virtual类型函数名(参数表0 #include<iostream>usingnamespacestd;classB0//抽象基类B0{virtualvoiddisplay0纯虚函数成classB1:publicB0公有派{voiddisplay(cout<<“B1::display()”<<endl虚成员函classD1publicB1公有派{voiddisplay(cout<<“

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论