已阅读5页,还剩5页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1.是不是一个父类写了一个virtual 函数,如果子类覆盖它的函数不加virtual ,也能实现多态?virtual修饰符会被隐形继承的。private 也被集成,只事派生类没有访问权限而已。virtual可加可不加。子类的空间里有父类的所有变量(static除外)。同一个函数只存在一个实体(inline除外)。子类覆盖它的函数不加virtual ,也能实现多态。在子类的空间里,有父类的私有变量。私有变量不能直接访问。-2.输入一个字符串,将其逆序后输出。(使用C+,不建议用伪码)#include using namespace std;/第一种void main() char a50;memset(a,0,sizeof(a); int i=0,j; char t; cin.getline(a,50,n); for(i=0,j=strlen(a)-1;istrlen(a)/2;i+,j-) t=ai; ai=aj; aj=t; coutaendl; 3写出运行结果:/ test1 char str = world; cout sizeof(str) : ; char *p = str; cout sizeof(p) : ; char i = 10; cout sizeof(i) : ; void *pp = malloc(10); cout sizeof(p) endl;4.C和C+有什么不同?从机制上:c是面向过程的(但c也可以编写面向对象的程序);c+是面向对象的,提供了类。但是,c+编写面向对象的程序比c容易从适用的方向:c适合要求代码体积小的,效率高的场合,如嵌入式;c+适合更上层的,复杂的; linux核心大部分是c写的,因为它是系统软件,效率要求极高。从名称上也可以看出,c+比c多了+,说明c+是c的超集;那为什么不叫c+而叫c+呢,是因为c+比c来说扩充的东西太多了,所以就在c后面放上两个+;于是就成了c+C语言是结构化编程语言,C+是面向对象编程语言。C+侧重于对象而不是过程,侧重于类的设计而不是逻辑的设计。5class A virtual void func1(); void func2();Class B: class A void func1()cout fun1 in class B endl; virtual void func2()cout fun2 in class B endl; A, A中的func1和B中的func2都是虚函数.B, A中的func1和B中的func2都不是虚函数.C, A中的func2是虚函数.,B中的func1不是虚函数.D, A中的func2不是虚函数,B中的func1是虚函数.答:6试写出程序结果:void f1( int *px) *px+=10;void f2(int &xx) xx+=10;void main(void)int x=0;coutx=xendl;f1(&x);coutx=xendl;f2(x);coutx=xendl;答案:7 试写出程序结果:int a=4;int &f(int x) a=a+x; return a;void main(void) int t=5; coutf(t)endl; a = 9 f(t)=20; a = 20 coutf(t)endl; t = 5,a = 20 a = 25 t=f(t); a = 30 t = 30 coutf(t)endl; t = 60答案:8试写出程序结果:class Testint x , y;int m, n; public: void Setxy(int a, int b)x=a;y=b; void Setxy(int a,int b,int c,int d) x=a;y=b;m=c;n=d; void Printxy(int x)cout “m=mt“n=nendl; void Printxy(void) coutx=xty=yendl; ;void main(void) Test p1,p2; p1.Setxy(3, 5); p2.Setxy(10,20,30,40);/参数不同 p1.Printxy(); p2.Printxy(); p2.Printxy(2);/参数、类型不同答案:9试写出程序结果:class Afloat x,y;public: A(float a,float b) x=a;y=b;cout调用构造函数n; A() cout调用析构函数n; void Print(void) coutxtyendl;void main(void) A a1(1.0, 10.0); a1.Print(); a1=A(3.0 , 30.0); a1.Print(); cout退出主函数n;11 指出错误并修改:class Str int Length; char *Sp;public:Str (Str &string)Length = string.length;Sp = dtring.Sp; Str(char *string) if(string)Length=strlen(string); Sp=new charLength+1; strcpy(Sp,string); else Sp=0; void Show(void)coutSpendl;Str()if(Sp) delete Sp;void main(void)Str s1(Study C+);Str s2(s1);s1.Show ();s2.Show ();12写出程序的运行结果class Afloat x;public: A(int a) x=a; cout“调用了A的构造函数n”; A()cout“调用了A的析构函数n”;class Bfloat y;public: B(int a) y=a; cout“调用了B的构造函数n”; B()cout“调用了B的析构函数n”;class Cfloat z; B b1; A a1;public: C(int a,int b,int c): a1(a),b1(b)z=c;cout“调用了C的构造函数n”; C()cout“调用了C的析构函数n”;void main(void) C c1(1,2,3); 答案:(考查构造,析构先后顺序)13写出程序的运行结果class Base1 int x;public: Base1(int a)x=a;cout调用基类1的构造函数!n;Base1( )cout调用基类1的析构函数!n;class Base2 int y;public: Base2(int a)y=a;cout调用基类2的构造函数!n;Base2( )cout调用基类2的析构函数!n;class Derived:public Base2, public Base1int z;public: Derived(int a,int b):Base1(a),Base2(20) z=b; cout调用派生类的构造函数!n;Derived( )cout调用派生类的析构函数!n;void main(void)Derived c(100,200);答案:(考查构造,析构先后顺序)14写出程序的运行结果class B;/必须在此进行引用性说明,class Afloat x,y;public: A(float a, float b) x=a; y=b; float Sum(B &); /说明友元函数的函数原型,是类A的一成员函数;class Bfloat m,n;public: B(float a,float b) m=a;n=b; friend float A:Sum(B &);/说明类A的成员函数是类B的友元函数float A:Sum( B &b)/定义该友元函数 x=b.m+b.n; y=b.m-b.n; void main(void) A a1(3,5); B b1(10,20); a1.Sum(b1);/调用该函数,因是类A的成员函数,故用类A的对象调用a1.x=?a1.y=?答案:15写出程序的运行结果class Aprotected:int x;public:A()x =1000; virtual void print()=0; ;class B:public A private: int y;public:B() y=2000;void print()cout “y=”yn;class C:public A int z;public:C()z=3000;void print()cout “z=”zprint(); pa=&c; pa-print(); A a; pa=&a; pa-print( );程序结果:?16完成程序class Aint i;public:A(int a=0) i=a;void Show(void)couti=iendl;void AddA(A &a, A &b)i=a.i+b.i;/重载运算符实现部分+。;void main(void)A a1(10),a2(20),a3;a1.Show ();a2.Show ();a3=a1+a2;a3.AddA(a1,a2);a3.Show ();答案:17写出程序的运行结果#include Class APublic:A() cout”A:A() called” ; ;Class B : public APublic :B(int i) buf=new chari;B() Delete buf;Cout”B:B() called”;Void fun(a *a)Delete a;Int main()A *a=new B(15);Fun(a);Return 0;写出程序运行结果,?18.输出下面程序结果。 #include class A public:virtual void print(void) coutA:print()endl; ;class B:public A public:virtual void print(void) coutB:print()endl; ; class C:public Bpublic:virtual void print(void)coutC:print()print(); pb-print(); pc-print(); print(a); print(b); print(c); 答案:19:请说出static和const关键字尽可能多的作用(以C+的观点)解答:static关键字至少有下列n个作用:(1)函数体内static变量的作用范围为该函数体,不同于auto变量,该变量的内存只被分配一次,因此其值在下次调用时仍维持上次的值;(2)在模块内的static全局变量可以被模块内所用函数访问,但不能被模块外其它函数访问;(3)在模块内的static函数只可被这一模块内的其它函数调用,这个函数的使用范围被限制在声明它的模块内;(4)在类中的static成员变量属于整个类所拥有,对类的所有对象只有一份拷贝;(5)在类中的static成员函数属于整个类所拥有,这个函数不接收this指针,因而只能访问类的static成员变量。const关键字至少有下列n个作用:(1)欲阻止一个变量被改变,可以使用const关键字。在定义该const变量时,通常需要对它进行初始化,因为以后就没有机会再去改变它了;(2)对指针来说,可以指定指针本身为const,也可以指定指针所指的数据为const,或二者同时指定为const;(3)在一个函数声明中,const可以修饰形参,表明它是一个输入参数,在函数内部不能改变其值;(4)对于类的成员函数,若指定其为const类型,则表明其是一个常函数,不能修
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026浙江台州市能投电力建设有限公司招聘2人备考题库含答案详解(精练)
- 2026年锦州市医疗系统事业编乡村医生人员招聘考试备考试题及答案详解
- 个人财务工作总结
- 孝老爱亲事迹材料
- 中国肾脏移植受者侵袭性镰刀菌病临床诊疗指南解读
- 职业健康安全知识手册:应知应会100条
- 用二元一次方程组解决问题(第3课时)课件2025-2026学年苏科版七年级数学下册
- 2026年音乐吉他行业分析报告及未来发展趋势报告
- 2026年酸碱催化剂行业分析报告及未来发展趋势报告
- 2026年羰基钴行业分析报告及未来发展趋势报告
- 中国兽药典三部 2020年版
- 通航桥梁基础知识课件
- 广东省2025届普通高中毕业班第一次调研考试 语文试卷(含答案)
- DL∕T 531-2016 电站高温高压截止阀闸阀技术条件
- 智能制造概论
- 单元写作任务 统编版高中语文必修下册
- 个人查摆问题清单和整改措施
- 架空配电线路及设备运行规程
- GB/T 2484-2023固结磨具形状类型、标记和标志
- 苏泊尔电磁炉标准板电路分析
- 五行称命书--源自唐朝手抄本(檀香四逸)
评论
0/150
提交评论