1、C+提供了虚基类的方法,使得在继承间接共同基类时只保留其一份成员。18. 多态及其分类P145 多态性是指用一个名字定义不同的函数,这些函数执行不同但又类似的操作,从而可以使用相同的调用方式来调用这些具有不同功能的同名函数。 参数多态,包含多态,重载多态,强制多态,前两种称为通用多态,后两种称为专用多态19. 虚函数与重载函数的比较 .P153(1)函数重载处理的是同一层次上的同名函数问题,而虚函数处理的是同一类族中不同派生层次上的同名函数问题,前者是横向重载,后者可以理解为纵向重载。但与重载不同的是:同一类族的虚函数的首部是相同的,而函数重载时函数的首部是不同的。 (2)重载函数可以是成员函
2、数或普通函数,而虚函数只能是成员函数。 (3)重载函数调用是以所传递参数序列的差别作为调用不同函数的依据;虚函数是根据对象的不同去调用不同类的虚函数。 (4)虚函数在运行时表现出多态功能,这是C+精髓,而重载函数则在编译时表现出多态性。20, 一个类的函数是否是虚函数的条件是:.P151 判断该函数与基类的虚函数有相同的名称;该函数与基类的虚函数有相同的参数个数及相同的对应参数类型;该函数与基类的虚函数有相同的返回类型或者满足赋值兼容规则的指针、引用型的返回函数。21, cin cout 22, 根据文件中数据的组织 ,文件分为ascII文件和二进制文件23, 强制类型转换:(int)3.5
3、int(3.5)24, 内联函数inline P62 该方法的思想是在编译时将调用函数的代码直接嵌入到调用函数处。INLINE函数的机制兼顾了函数和效率两个方面的有点。二、看程序结果1、 以下程序的结果是_5,7 5,10 5,7_(全局变量与局部变量问题)viod myfunction( )int y=10; coutx“,”yendl; int x=5 ,y=7 ;int main( ) coutmyfunction( );cout2、以下程序的结果是_2,12 2,14_(静态变量应用)int ret(int a) static int c=10; a=a+c; c=a return c
4、;int main() int a=2;for(int i=0; i2; i+) couta”, ” ret(a)3、以下程序的结果是_3_(指针)int main( ) int a=2 ; Int *b=&a ; a=3 ;*b ;4、以下程序的结果是_3_(引用) int a=2 ; int &b=a ;b ;5、以下程序的结果是_(参数传递) int x(3) , y(8) Swap(x , y) ;“x=“ y=”n ; do rd=_n%10_; coutwhile(n!=0)if(n0)_i+_; if(n”正整数个数:“i ”负整数个数:”j mendl_switch(_m/10
5、_) case 10: case 9:”优秀” ; break ;case 8:”良好” ;case 7:”中等” ;case 6:”及格” ;default:”不及格” ; 4、交换两个整数 int x(5) , y(10) void Swap(int _&a_ ,int _&b_) t=a ;a=b ; b=t ;5、查找数组中元素值为5的元素,返回其序号 int n ,a10 , i=0 ; for(i=0 ;10 ; i+ ) cinai ;for(i=0 ; i+ ) if(_ai=5_) _counti_ ;if(i=10)cout”no find” ; else couti; 6
6、、查找数组中元素值为b的元素,将其替换为 Bchar a10 ; int i=0 ,j=0 ,n ; i+ ) if(_ai=b_) _ai=B_;”ok” ;7、交换两个整数 Swap(_int &x_, _int &y_) ; void Swap(int *a ,int *b) _t=*a_ _*a=*b _*b=t_ 四、编程题2、定义一个复数类,实现两个复数类相加和相减。P206要求:(1)将运算符函数重载为成员函数;(2)将运算符函数重载为友元函数#include using namespace std;class Complexpublic: Complex()real=0;ima
7、g=0; Complex(double r,double i)real=r;imag=i; Complex operator + (Complex &c2); Complex operator - (Complex & void display();private: double real; double imag;void Complex:display()cout(real,imagi)Complex Complex:operator + (Complex &c2) Complex c; c.real=real+c2.real; c.imag=imag+c2.imag;operator -
8、 (Complex & c.real=real-c2.real; c.imag=imag-c2.imag; Complex c1(3,4),c2(5,-10),c3,c4; c1.display(); c2.display(); c3=c1+c2;c3=c1+c2= c3.display(); c4=c1-c2;c4=c1-c2= c4.display(); return 0;#include friend Complex operator + (Complex &c1, Complex & friend Complex operator - (Complex &Complex operato
9、r + (Complex & c.real=c1.real+c2.real; c.imag=c1.imag+c2.imag;Complex operator - (Complex & c.real=c1.real-c2.real; c.imag=c1.imag-c2.imag;5-7#includeusingnamespacestd;classCatpublic:Cat(intage)numOfCats+;virtualCat()numOfCats-;staticintgetnumOfCats()returnnumOfCats;Cat:numOfCats=0;voidtelepathicFun
10、ction()coutTherearecatsalive!nmain()constmaxCats5;*catHousemaxCats;for(iimaxCats;i+)catHouseinewCat(i);telepathicFunction();deletecatHousei;4-11RectangleRectangle(floatlen,floatwidth)Lengthlen;Widthwidth;Rectangle();GetArea()*Width;GetLength()Length;GetWidth()main()length,请输入矩形的长度:cinlength;请输入矩形的宽度
11、:Rectangler(length,width);长为length宽为width的矩形的面积为:r.GetArea()3、编写一个类,其成员函数包括:1)接受键盘输入的英文句子;2)实现一条英文句子中字母的个数统计并输出;3)输出英文句子。主函数里进行测试。#includeclass Char Char()count=0; void Input(); void show(); void GetCount() 字母个数为:count-1; private: char a100; int count;void Char:Input() for(int i=0;i100;i+) count+;ai; if(ai=) /当输入的符合为是退出循环 break;show()int main()Char a;a.Input();a.show();a.GetCount();return 0;
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1