版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
《C++》考试讲C++C1972C
—— 考试教学团队编录—第一 C++语言概C++2080C++C改进了CC++ voidmain() {int //定义变cout<<”Entertwointeger.”;//在标准输出设备上输出 intresult;result<<”\nThesum}字母区分大小注释
传统的C语言注释方法,将其他文件中的源程序插入当前文件的#include语句位置中。头文件在编译系统的 中查找1 考试专业品牌预祝银考考生旗开得胜头文件现在当 查找,而后再在编译系统的 中查找在iostream.h标准输入对象cin,用于从标准输入设备读入数据(一般指键盘。intx,y;标准输入对象cout,用于向标准输入设备写入数据(一般指屏幕。intcout<<”Thevalueofiisdoublemax(doublex,double //函数定{if(x>=y)returny;elsereturny;}void{doublecout<<”Inputtwonumbers:”<<endl; //函数调cout<<”Thesquarrootofcis”<<”}sqrt()math.h2 考试专业品牌预祝银考考生旗开得胜第二 基本数据类型和表达为什么要分数据类
数据类 占用字节(跟编译器有关 数据范 2 - 2bytes(16位机 4 2bytes(16位机 4bytes(32位机 - 3 考试专业品牌预祝银考考生旗开得胜unsigned2bytes(16位机4bytes(32位机0~232-unsigned40~232-在整形常量后可加修饰符l或L十进制整数:以非零的数字开123//signedint65000//unsignedint123u//unsignedint123L//singedlongint八进制整数:以零开0123=83//unsignedint011L=9//unsignedlongint十六进制整数:以0X0x开0x123=291//signedint0X123u=291//unsignedint 字符数据在内存中 形以ASCII ,占1字节,用7用于表示字符时存放的是字符的ASCII数据类占用字数据范-unsigned转义序ASCII值对应字转义序ASCII码对应功能或字78ccc9hh4 考试专业品牌预祝银考考生旗开得胜 垂直制 空字符 例chara97a97{charc1,c2;}voidmain()65666566ABAB{inta,b;char65666566ABABcout<<a<<“”<<b<<“”<<int(c)<<“”<<int(d)<<endl;cout<<char(a)<<“”<<char(b)<<“”<<c<<“”<<d<<endl;}enmu枚举名{变量值类表};enumvoidmain(){enumcolor{red,green,blue};//red=0,greed=1,blue=2colorpaintbrush=red; //colorpaintbrush;5 考试专业品牌预祝银考考生旗开得胜// //paintbrush==red//okcout<<”redpaintbrush”<<endl;}2.5数据类占用字精有效数字位478long longdouble精度,赋值时截取如 {floatv,r,h;}#defineMAXLINE可读性好,修改方在预编译时将程序中凡出现MAXLINE的地方全部用100代替一定类型的常量名(在C++中只为了兼容菜保留#define)constfloat constdouble 定义成const后的变量,程序中对其只能读不能修改。因此常量定义是必须初始化6 考试专业品牌预祝银考考生旗开得胜constflout 变量本身未变化例:将char型变量啊的最低位置0. //a&11111110B例:有charc;inta;取出a的低字节,置于c中 //a&11111按位或:例:将inta的低字1。按位异或 使特定位翻转(01异或取反例:要 B第四位翻转B B左移后,低位补0, 右移后,低位舍去 无符号数补有符号数补0 例:将int型数据a最低位置0; ++表达式--表达式具有副作7 考试专业品牌预祝银考考生旗开得胜intint //int intb=-- intc=a-- int //error,a++非左intd=++++a; intd=++3; int //ok,++a为左intc=(--a //ok,--a为左赋值类运算符 - 左值=左值op表达具有副作类型转换的顺序从小到大是:intlongfloatdoublelongdouble整形=实型:截掉小数部分实型=整形:数值不变,存为浮点整形=字符型:存入整形低8位,0或符号位扩展存入高8位(与机器有关longint=int:符号位扩展longint=unsignedint: 补0。整形=(字节数相同的)unsigned整形:原样送入,若超过整形表示范围,会出错unsigned=(字节数相同的)sunsigned模型:原样送入,符号位也作为数值其他运算符sizeof->± new或voidmain(){<<sizeof(long}8 考试专业品牌预祝银考考生旗开得胜9 考试专业品牌预祝银考考生旗开得胜 考试专业品牌预祝银考考生旗开得胜详解符中它们具有最高的优先级,又由于它们都是从右至左结合的,因此*p++与*(p++)等效 的C语言运算符优先 [转醋坛酸味灌,味落跳福豆。(共44个运算符醋-初等,4个指向结构体成员结构体成坛-单目,9个~负号类型)*指针&取地址sizeof长度(自右向左)酸-算术,5个:*/%+-减味-位移,2个灌-关系,6个于等于味-位逻,3个&按位与^按位异或|按位或落-逻辑,2个&&辑与||辑或 考试专业品牌预祝银考考生旗开得胜跳-条件,1个,三目(结合方向:自右向左福-赋值,11个*=&=^=|=(结合方向:自右向左)豆-逗号,1个:,自己今天写程序时候把关系运算符号和位逻辑的优先级弄反。尽量用括号,就不出问题。如(P1OUT&BIT0==0)P1OUT^=BIT0;判断P1OUT是否输出为0,是就翻转,即点亮LED.这行程序是错误的。可两C语言中4个运算符规定了运算方向,它们是&&、||、条件运算符及赋值运算符。&&、||都是先计算符的左边位0,则右边表达式b就不再判断。在条件运算符中a?b:c;先判断a的值,再根据a的值对b或c之中的一个进行求值。赋值表达式则规定先对右边的表达式求值,因此使a=b=c=6;成为可能。<> !bool,falsetruebool程序里用逻辑判断/条件运算 voidmain(){int //a、b中小的值} 例:typedef intage; 考试专业品牌预祝银考考生旗开得胜intI,j}格式 求解顺序及结果 先解表达式1,再解表达式2,最终结果为表达式2的值 //ok,d为左if第三 C++程序的流程控if一般形式:if(条件)1[else elsecout<<y;if(2)else
语句else elsez=2; //if对应(最近一个),与格式无关。规定:else部分属于前面最近的无对应elseif语句。 考试专业品牌预祝银考考生旗开得胜{if(y>1)z=1;}elsez=2;if(1)elseif(条件 语句elseif(3)else语句switch //可以使整型、字符型、枚举型 case常量表达式1:语句序号 //常量表达式必须与switch后表达式匹配case常量表达式2:语句序号 case常量表达式n:语句序号n 语句序号 //可以缺省}以case中的常量表达式值为 标志,由此开始顺序执行。因此,每个case分支最后应该加break语case分支可包含多个语句,且不用表达式、判断值都是int型或charfor循环条 考试专业品牌预祝银考考生旗开得胜voidmain(){constintmax=10;constintmin=-5;intcel;float //fah=cel”9.0/5+32;cout<<cel<<”“<<fah<<”\n”; //cout<<cel<<”“<<fah<<”\n”; //if(cel<minbreak;}//break跳 whilewhile(循环条件)循环 //必须含有改变条件表达式值的语循环条do循环条while/do-while循环较简单。whilefor循环(与其他语言的类似结构比)功能更强大,涵盖了whilefor许多情况下用forwhilebreak 使程序冲循环体和switchcontinue { 考试专业品牌预祝银考考生旗开得胜}gotogotogoto语句与标号配合,实现函数体内任意的控制转移。标号可写在任何语句前面,形式是:标号名是标识符。表示一个位置,作为gotogoto语句的形式 goto标号名大部分goto……goto……goto随便用goto是不良编程习惯。不合理的goto表明对问题欠分析,没做好流程分解,函数抽象等,写出的是 对gotoreturn形式一:形式二:returnreturn函数体里可有多个return语句。在带表达式/所带表达式的类型方面必须与函数头部一致。
第四 数 考试专业品牌预祝银考考生旗开得胜数组实现,数组 方式数组(变量)inta[10];doublea1[100]; inta2[16],n,a3[25],m; voidf(intm,intn){int //errorb例:inta[4]={1,1,2,3};intb1[4]={1,2}; intfib[]={1,1,2,3,5,8,13,21,34,55};int;intintarray[5]=intarray[5]=;intarray[5]=staticintarray[5]=intarray[5]=数组 实数组占据一连 区,元素顺序排列,0号元素在最前面,各元素占相同空间:inta 恰好能存放5个整形数据a
考试专业品牌预祝银考考生旗开得胜元 :通过[]运算符及下标表达式0,其余顺序编号。n0到n-1、例:inta[10];编译程 //数组 量( 大小 //数组a元素的大小(一个元 大小sizeof(a)/sizeof(a[0])//数组a的元素个数(除法算出元素数量doubleintint //inta[3][2]={{1,2},{3,4},{5,6}};inta[3][2]={1,2,3,4,5,6};inta[][2]={{1,2},{3,4},{5,6}};inta[][2]={1,2,3,4,5,6};设:doublea[3][2];a代表数组整体,a[0]、a[1]a[2]是成员数组,一维数组。a[0][1]a01的元素,可例boolisprime(long{intm=sqrt(n);for(inti=2;i<=m;i++)returnfalse;return}通过return 考试专业品牌预祝银考考生旗开得胜return返回值的类型为定义的函数类型,若return语句中表达式类型与函数类型不一致,则转换为函数类型。无返回值的函数,定义为void第五 C++函类型标识符函数名(形式参数表类型标识符函数名(形式参数表和和用return把一个值返回调用函数; 嵌套调用 函数不允许嵌套定义,但可以嵌套调用函数 函数 函数floatadd(floatx,floaty)输出:sumis输出:sumis{floata,b,c; 考试专业品牌预祝银考考生旗开得胜递归停止条件 递 floatfac(intn){floatif(n<0)cout<<”n<0,dataerror!”;elseif(n==0||n==1)f=1;elsef=fac(n-1)*n;迭代解法要比递归解法快{intn;floatcout<<”inputaintegernumber:”;例:用递推方Hanoi问有三根针A、B、C。A针上有64个盘子,盘子大小不等,大的在下,小的在上。要求把这64个盘子从A针移到C针,在移动过程中可以借助B针,每次只允许移动一个盘,且移动过程中在三根针上都保持大盘 将A上n-1个盘子移到B针上;将A针上剩下的盘子移到C针上;将n-1个盘子从B针移到C针上上面三个步骤包含两类操作n-1个盘子从一个针移到另一个针上(n>1),这是一个递归的过程;1个盘子从一个针上移到另一针上。用两个函数分别实现上面两类操hanoi函数实现第一类操作,用move函数实现第2类操作voidmove(chargetome,char voidHanoi(intn,charone,chartwo,charthree){if(n==1)move(one,three);{hanoi(n- 考试专业品牌预祝银考考生旗开得胜Hanoi(n-{intcout<<”inputthenumberofdiskes:”;cout<<”thesteptomoving”<<m<<”diskes:”<<endl;}类型标示符被调用函数名(含类型说明的形参表boolisprime(long{intm=sqrt(n);for(inti=2;i<=m;i++)returnfalse;returntrue;}程序中调用标准函数,应用#include命令包含相应头文件。 调用时的参数成为定义函数时的参数成为形参实参 形参 考试专业品牌预祝银考考生旗开得胜intmax(intx,inty);voidmain(){intprintf(“inputtwonumber:”); //c语言输出格式,相当于cout<< //c语言输出格式,相当于cin>> //实参}intmax(intx,int //形参{return}实参 给形参,形参变化,实参不变传地址(指针) voidmain(){intx,y;voidf(intx,int*y,int*z)}void{inta,b,c; 考试专业品牌预祝银考考生旗开得胜}数组元素作为实参,与单个变量一样数组名作为参数,行、实参数都应是数组名,类型要一样,传送到是数组首地址 方其中<指针变量名>就是数组参数说明中的<数据名> 如:voidfun(constintx,constchary);(123i=k=缺省参数传递的值和默认值必须 的类型一致如:voidfun1(intx,inty=0,intz=0){……}为了避免函数调用开销,可以使用关键字inline指示编译器将函数作内联函数处理。例:inlineintmax(inta,intb);inlinefloatmax(floata,floatinlinedoublemax(doublea,double函数的定义 前加上关键字inline则就把该函 为内联函数在程序编译阶段系统就有可能把所有调用该函数的地方都 换为该函数的执行代码,从而加快整个程序的执行 考试专业品牌预祝银考考生旗开得胜intabs(intdoubleabs(doublelongabs(long{cout<<”longversion.\n”;intabs(intx);doubleabs(doublex);longabs(longx);void }intabs(int{cout<<”integerversion.\n”;doubleabs(doublelongabs(long{cout<<”longversion.\n”;floatabs(floatx);doubleabs(double
考试专业品牌预祝银考考生旗开得胜void{//ambiguity二义性编译不通}floatabs(float{cout<<”integerversion.\n”;doubleabs(double函数 和定义默认情况下在整个程序中时extern的(开放的,可被调用静态函数:函数前加上 的函数和const常量都默认为 类型,如加上extern则为外 类型 void voidmain(){
id//link//linkstaticvoidt<<”thisisfn()\n”;}dstaticfn() {cout<<”thisisstaticfn()变量 类存放在栈区中。 空间可以被若干变量多次覆盖使用 存放在cpu的通用寄存器中;long,double,floatregister C++变量(象 考试专业品牌预祝银考考生旗开得胜量newdelete用extern对该变量进行 static型——只允许在本程序文件 缺省型——可以被其他文件中的函 ,但要 函数中用extern说明auto型、register型——static型——全 、局部可见auto 在寄存器中(只能是int型的autoint int autoauto和registerauto和registerstaticstatic和全局变量初始化时必须用常量为其赋初值,auto和registerstatic51055105void{intvoidswap(intx,inty);cout<<a<<’‘<<b<<endl;cout<<a<<’旗开得胜旗开得胜}void{inttemp;cout<<a<<’}例:局部变量的使voidother(void);voidi,a,bi,a,b为局部变量,只在main()int cout<<”i:”<<i<<”a:”<<a<<”b:”<<b<<endl;cout<<”i:”<<i<<”a:”<<a<<”}voidi,ai,astaticinta;cout<<”i:”<<i<<”a:”<<a<<”}例:全局变量的使inta;staticintb;voidmain()
a,ba,ba:30 a:130祝银考考生旗开祝银考考生旗开得胜}void}例:变量的初int //i为全局变量voidi:1a:0b:-10i:33a:4b:0i:33a:0i:1a:0b:-10i:33a:4b:0i:33a:0b:-10i:75a:6b:4{staticintregisterintb=-10;intc=0; //b,ccout<<”i:”<<i<<”a:”<<a<<”b:”<<b<<”c:”<<c<<endl;cout<<”i:”<<i<<”a:”<<a<<”b:”<<b<<”c:”<<c<<endl;a,bvoid{staticinta=2;staticintb;int //c为局部自动变量,每次进入都初始化cout<<”i:”<<i<<”a:”<<a<<”b:”<<b<<”c:”<<c<<endl;}#define //c te<classTmax(Tx,T //Tmax(Tx,Ty)模版,T//可为int、double、char te<classT>Tmax(Tx,T 考试专业品牌预祝银考考生旗开得胜char*max(char*x,char*y){returnstremp(x,y)?x:y;}voidmain(){intfloatx1=10.3,y1=3.7;doublex2=12.99,y2=66.22;cout<<”themaxofx,yis:”<<max(x,y)<<”\n”;cout<<”themaxofx1,y1is:”<<max(x1,y1)<<”\n”;cout<<”themaxofx2,y2cout<<”themaxofx,y1is:”<<max(x,y)<<”\n”; cout<<”themaxofx,y1is:”<<max<int>(x,y)<<”\n”; // //第六 指针 和动态空间管 例 intint例 voidmain()
考试专业品牌预祝银考考生旗开得胜{intint*ap=&a;floats=1650.5;float*sp=&s; //oka=s意义相同}0,用NULL voidvoidintn,*p;doublex,*q;void任何指针值都可直接赋给void指针,不必用(void*)做强制类型转换。void若voidpp=(int //不合理,q是(double因为当时gp1指向整型变量,吧这个指针值赋给双精度类型的指针无意义。voidvoidvoid指针可以指向任何变量,间 的意义无法确定void类型修饰符*指针名[=指针表达式int 考试专业品牌预祝银考考生旗开得胜autostatic型指针。constinta=123;constintb=100;intc=25;constint* //appointtoa //error:constcannotbe //ok:appointtoanother //error:constcannotbe //error:constcannotbe char*const //ok:thevaluecppointtoischanged //errorthevalueofcpcannotbechangedconstintc=127;inta;constint*constip1=&c; intconst*constip2=&a; //error:pointerconstcannotbechanged*ip2=128;//error:theconstvaluecannotbechanged int 如:intf(……){p是局部变量,没有初始化,也未赋过值,这时p值无法确定,未指向合法整型变量间 时大错误 无法预料指针p加上或减去n,其意义是指针当前指向位置的前方或后方n个数据的地址。 考试专业品牌预祝银考考生旗开得胜 例:p==0或p!=0p==NULL或p!=NULL向指针变量赋的值必须是地址常量或变量,不能是普通整数。但可 -- 除*外,都要求其作用的对象为变量(包括视同变量的操作结果取p所指向单元的数据作为表达式的值,然后使p指向下一个单元 考试专业品牌预祝银考考生旗开得胜取p所指向单元的数据作为表达式的值,然后使该单元的数据值增1使p指向下一个单元,然后取该单元的数据作为表达式的值p所指向单元的数据增1并作为表达式的值inta[10];int *paa[0],*(pa+1)a[1],…,*(pa+i)a++,a设一个a10个元素。用三种方法输出个元素:使用数组下标:a[3] 使用指针变量:voidmain(){inta[10];inti;}intint8个元素的int 考试专业品牌预祝银考考生旗开得胜char例:char*name;staticint*p[2];//p[0],p[1]int(*p)[4];//表示p4voidmain(){charstaticchar*name[]={}main(intargc,charmain(intargc,charvoidmain(intargc,char-- 考试专业品牌预祝银考考生旗开得胜 voidplus(intx,inty,int*z)voidmain(){intcout<<”EnterAandB:”;类型修饰符*函数名例:int*fun(a,b)fun函数返回一个指向整形数据的指针,可返回堆地址,可以返回全局或静态变量的地址,但不要返回局部类型修饰符(*函数指针名 例:int(*p)(); //p指向一个返回整型值的函数 /*p指向函数fun,且函数名后不能写参数,即p=fun(a,b)错。fun(x,y)得到一个函数值,不一定是 例:(*p)(a,b) 必须 是就初始化类型修饰符 名= 的目标的名 //类型为 的目标的类voidmain(){inti=5;int&ri=i;inti1=8;
考试专业品
预祝预祝银考考生旗开得胜 voidswap(int&x,int&y);voidmain(){intcout<<”beforeswap,x:”<<x<<”,y:”<<y<<endl;}voidswap(int&rx,int{inttemp=rx;rx=ry;} 返回多个boolFactor(int,int&,int&);voidmain()boolerror;cout<<”Enteranumber(0~20):”;boolFactor(intn,int&rsquared,intreturntrue;returnfalse;} 考试专业品牌预祝银考考生旗开得胜doubletemp;doublefn1(doublereturntemp;}double&fn2(doublereturntemp;}void{doublea=fn1(5.0);//double&b=fn1(5.0);//errordoublec=fn2(5.0);double&d=fn2(5.0);}函数返回值时,要生成一个值的副本,而 返回值时,不产生值的副本 newdeletenew0newdeleteintp=new //…int*p=newint[100];100…int //…int*pi=newint[10];int*temp=pi;elete //deletepi;//error,pinew 考试专业品牌预祝银考考生旗开得胜[]:为数 简单实
第七 结构和联如:int等
struct{1;2;…数据类型成员名 //{charname[10];//成员类型:可以使除本身结构类型之外的任何已有类型, intage; float 考试专业品牌预祝银考考生旗开得胜struct{…}变量名[={初始化数据}同类型变量名struct结构类型名{…}变量名[={初始化数据}同类型变量名],…;[struct][={初始化数据}同类型变量名 sizeof一般情况下不能把结构体作为一个整体参加数据处理。结构体成员 形式结构变量名.仅限于外部的和static结构成员 操结构成员 操赋 直接指定成员(点运算符 直接指定成员(箭头运算符)结构成员的形式voidmain(){struct{char*name; intchar wang.addr=”StreetPeacecout<<<<” <<”“<<wang.old<<” 考试专业品牌预祝银考考生旗开得胜}struct[元素个数];struct[]={初始数据#defineMAX3struct{charname[20]; intcharvoid{structpeopleman[MAX];chars[10];inti; }structsample{intnum;charcolor;
考试专业品牌预祝银考考生旗开得胜chartype;};void{staticstructsampleinti;cout<<car[i].num<<”“<<car[i].color<<”}
struct*结构指针名;结构指针加1将指向内存中下一个结构体。 (*结构指针名). ++pman->name等同 ++(pman- 等同 *(pman-structsample{intnum;charcolor;charvoid{structsample*p;inti;cout<<p->mum<<”“<<p->color<<”“<<p-以结构指针作structdate{intint
考试专业品牌预祝银考考生旗开得胜intintvoiddays(structdate*pd);voidmain(){structdate}voiddays(structdate{staticintint}struct{chars[20];inta;floatstructdatatypefunction(void);voidmain(){cout<<”CALLFUNCTION……”<<endl;datatyperev=function();}structdatatype{structdatatype 考试专业品牌预祝银考考生旗开得胜}#defineNULL0struct{intnum;charcolor;char}structsample*find(intn);voidmain(){intstructsample*result;cout<<”Enterthenumber:”;elsecout<<”Notfound”<<endl;}structsample*find(int{intif(car[i].num==n)break;} 头指针变量head——指向链表的首结点。2 指针域——指向后继结点的指针 考试专业品牌预祝银考考生旗开得胜例如 struct{char //int //grade //struct{charno[7];intscore;gradestructgrade{gradeint //链表中的结点个数(初值为for //3个表达式的for语{p=newgrade; cout<<”thenumberofstudentNo.:”<<count+1<<endl;cin>>p-{deletep;}cout<<”thescoreofthestudentNo.”<<count+1<<endl; //结点个数加if(count==1)head=p;//是第一个结点,置头指elsetail->next=p; }}operator单目操作符(一个类型参数说明)operator双目操作符(第一个参数说明,第二个参数说明) 考试专业品牌预祝银考考生旗开得胜union{1;2;数据类型成员名联合名.highbyte:12highbyte:12lowbyte:34{charlow;charhigh;};union{structw_tagbyte;shortword;}u;voidmain()cout<<”wordvalue:”<<u.word<<endl;cout<<”lowbyte:”<<u.byte.low<<endl;cout<<”wordvalue:”<<u.word<<endl;第八 类与对对象 考试专业品牌预祝银考考生旗开得胜操作:修改属性 属性,执行命类 intintdemo; voidvoidInitFraction(intn,intd);booloperator==(Fration&x);Fration&operator++();Frationoperator++(int);void //}类的成员 控公有 公保护(protected)私有 不公 // 考试专业品牌预祝银考考生旗开得胜p=newp- //{Frationreturnc;}域操作符classname::identifier{returnclass类名{ 公有数据和函 //公私有成员和受保护成员只能被类内部的成员函 考试专业品牌预祝银考考生旗开得胜 一般将类定义的说明部分或者整个定义部分(包含实现部分) Frationoperator+(Fration&x){Frationreturnc;} boolFration::operator==(Fration&x){returnint*a; 考试专业品牌预祝银考考生旗开得胜intn;Array(intaa[],intcerr<<”nofvalueisinvalid!”<<endl;intArrayArray若没有定义构造函数,系统会定义一个默认的构造函数:类名ArrayArray*p;deletep; 考试专业品牌预祝银考考生旗开得胜系统提供的函数有时不正确,系统提供的函数只进行简单 操作 类Arraya=newint[n];for(inti=0;i<n;i++)}Array与拷贝构造函数类似,有且只有一个所属类的参数,但可以 ,也可以是值参{delete[]a;a=newint[n];for(inti=0;i<n;i++)return*this;} //this为本身调用成员函数的对象 ,使(r1-r2)能作为左值,使(r1-r2)-r3;实现r1-r3Array(intaa[],intlen):a(new n=len;for(inti=0;i<n;i++) 考试专业品牌预祝银考考生旗开得胜在类的对 周期结束时有系统自动调用的函在对象退 期前由系统调用的函~Array{delete函数名为符号‘~若没有定义析构函数,系统会定义一个默认析构函数:~函数名() 是一种定义在类外的普通函数 不是函数成员函数,但是它可 类中的私有成员把类外部的函数或 函数 类,使其能直 类中的私有成员friend函数或 //此语句可放在类中任意位置, 权限保留字无关classistream&operator>>(istream&istr,Fraction&x);classFration{intnume;int 考试专业品牌预祝银考考生旗开得胜friendistream&operator>>(istream&sitr,Fraction&x);{charcout<<”Inputaistr>>s.nume>>ch>>x.deno;//可以直 类的保护盒私有成returnistr;}类一个类可以作为另一个类 classpoint{intx,y;friendclassCircle;…classCircle{intradius;… 考试专业品牌预祝银考考生旗开得胜 私有继承,特点是:基类的公有成员和保护成员都作为派生类的私有成员,并且不能被这个派生类的子 基类(base派生类(derivedpublic、protected基类成员的控publicprotectedprivate基类成员在派生类中 控 考试专业品牌预祝银考考生旗开得胜classbase{inta;base(intclassderived:publicbase{intb;derived(derived::derived(inta1,intb1):base(a1){C++允许子类的成员函数重载基类的classStudent{Student(intintfloatStudent::Tuition(){returnn*n;}classGraduateStudent:publicStudent{floatTuition();};float 考试专业品牌预祝银考考生旗开得胜returnvoidmain(){StudentStudent类的成员函数。这种程序在程序编译时就能确定哪个重载函数被调用的,成为嫌弃联编。将成员函 为虚函数以后,系统会根据情况决定是采用先期联编还是采用迟后联编VirtaulclassStudent{Student(inta){n=a;}virtualfloatintfloatStudent::Tuition(){returnn*n;}classGraduateStudent:publicStudent{virtualfloatTuition();returnn*10;}voidmain(){Student公共静态数据成员可被类的外 ,保护或私有的静态数据成员只可被类内 考试专业品牌预祝银考考生旗开得胜 static,但静态数据成员前面必须使用作用域 由于静态成员函数属于类而非静态成员属于对象,因此,在静态成员函数中不允 非静态成员静态成员函数中可 对象中的非静态成员classFile{staticintstaticint{returnclassxx{inta;staticintxx(intaa=0){a=aa;b++;}intgeta(){returna;}intxx::b=0;void xxx(10),y(20);}代 的问 考试专业品牌预祝银考考生旗开得胜在C++中,由于模块是分别编译的,如果在模块A中要使用模块B中定义的一个模块的某个实例,而在模块B中 te<classType>//tem te<class****>classList{List在一个类模板的各个实例之间没有特殊的联系(形成一个个独立的类List<int>qi;List 模板的参数可以是一种类型(type)或者非类型类型参数用typename或class te<classT1,classT2,classT3>classclassname; te<typenameT1,typenameT2,typenameT3>classclassname;每个类型名前面都必须右class或typename classList; te<classtype=int,intsize=1024>
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 地铁防水保温施工协议
- 生态园区物业管理人员聘用合同
- 车辆行驶证补办流程
- 城市建设保险总价承包合同
- 垃圾处理项目报名表
- 餐饮美食街门面租赁合同
- 农业观光园土地复垦项目招投标
- 医院建筑小青瓦安装合同
- 私募基金财务总监聘用合同
- 工程项目电梯供应合同
- 2024春期国开电大法学本科《知识产权法》在线形考(第一至四次形考任务)试题及答案
- 骨科术后疼痛护理
- 产科医生进修汇报
- 八年级语文(完整版)标点符号及使用练习题及答案
- MOOC 有机化学-河南工业大学 中国大学慕课答案
- 城市观光车项目可行性研究报告
- “三新”背景下2025届高考政治一轮复习策略 课件
- 尿素乳膏与其他药物联合治疗皮肤病的研究
- 市场营销策划(本)-形考任务二(第五~七章)-国开(CQ)-参考资料
- 幼儿图书登记表
- 中考英语选择题120题(含答案)
评论
0/150
提交评论