面向对象程序设计资料整理长大.doc
《面向对象程序设计资料整理长大.doc》由会员分享,可在线阅读,更多相关《面向对象程序设计资料整理长大.doc(34页珍藏版)》请在咨信网上搜索。
面向对象程序设计复习资料 (2328) 一、 单项选择题 1.假设P是指针, 声明指针s引用指针p正确方法是 ( ) A.int* s&=p B.int &*s=p C.int *&s=p D.int s* &=p 2.在C+ +中, 能够为类的所有成员共享的是 ( ) A、 枚举成员 B、 公有数据成员 C、 私有函数成员 D、 公有函数成员 3.C+ +中, 下列哪个关键字不能提供封装。 ( ) A、 struct B、 union C、 class D、 case 4.下而关于类的复制构造函数的说法正确的是 ( ) A.一个类只能有一个复制构造函数 B.能够为void类型 C.不能有返回类型 D.不能使用缺省参数 5.下面叙述正确的是: ( ) A.派生类不能够使用私有派生 B.保护派生时, 基类的保护成员在派生类中是公有的 C.对基类成员的访问能够允许两义性 D.赋值兼容规则也适用于多重继承的组合 6.定义虚函数使用关键字 ( ) A.: : B.virtual C.& D.-> 7.在下面几项中, 运算符在C++中能被重载的是 ( ) A .= B.? : C.sizeof D. : : A.结构 B.类 C.继承 D.引用 8.在执行下面程序语句之后, num的值为 ( ) int num = 500; int& ref= num; ref = = ref -50; A.450 B.500 C.-50 D.无法确定 9.所有在函数外面定义的变量, 连同形式参数, 都属于 ( ) A、 局部变量 B、 全局变量 C、 静态变量 D、 寄存器变量 10.面向对象的程序中, 哪项不是对象的特点。 ( ) A、 多态性 B、 抽象性和封装性 C、 中断 D、 继承性 11.下面在半初始化说法正确的是 ( ) A.初始化列表能够初始化任何类 B.初始化列表也也能够初始化具有私有成员的类 C.初始化列表只能初始化公有数据成员 D.初始化列表能够初始化所有数据成员 12.产生编译时的多态性的必要条件是使用 ( ) A.静态成员 B.友元函数 C.重载成员函数 D.虚函数 13.operator经常和C++的一个运算符连用,构成一个运算符函数名.运算符函数的返回类型不能是 ( ) A.void B.char C.int D.float 14.下面是对C++运算符的叙述, 正确的叙述是 ( ) A.只有类运算符 B.只有友元运算符 C.同时具有类运算符和友元运算符 D.同一个运算符只能重载一次 15. 在面向对象的设计中,一切都是围绕着什么展开的 ( ) A.类 B.结构 C.数据类型 D.对象 16. 下面哪项不能算是面向对象程序设计所具有的显著特点 ( ) A .封装 B.继承 C.抽象 D.递归 17. 下面选项中哪一项不是结构和类的共同特性 ( ) A.对象能够用作数组的元素 B.在缺省情况下, 成员是私有的 C.对象之间能够相互赋值 D.能够说明指向对象的指针和引用 18.下面有关类性质说法错误的是 ( ) A.一个类能够有多个构造函数,但只有一个析构函数 B.析构函数和构造函数都不能有返回类型 C.不能够给析构函数指定参数 D.一个类中不能够说明具有类类型的数据成员 19. 下面叙述不正确的是 ( ) A.成员的访问能力取决于派生方式 B.基类的私有成员在公有派生类中不可访问 C.对象能够访问所有成员 D.公有基类成员在保护派生中保护的 20.成为抽象类的一个条件是这个类 ( ) A.至少有一个纯虚函数 B.至少有一个虚函数 C.只含有一个纯虚函数 D.只含有一个虚函数 21. 下列叙述正确的是 ( ) A.有1个运算符不能被重载 B.有2个运算符不能被重载 C.有3个运算符不能被重载 D.有4个运算符不能被重载 22.在以下选项中, 不属于模板特点的选项是 ( ) A.处理数据时, 处理的是不同类型的相同操作 B.声明不需要给出数据类型 C.对于相同的数据类型产生不同的实例 D.对于不同的数据类型能够产生不同的实例 23. 经过什么建立类树 ( ) A.类 B.虚函数 C.多重继承 D.单一继承 24.C++使用新的分配动态内存的函数是 ( ) A . malloc ( ) B. free( ) C. delete D. new 25.以下关于C+ +对象特点叙述不正确的是 ( ) A、 对象能够进行四则运算 C、 对象能够用作数组的元素 C、 对象能够用作函数参数 D、 对象之间能够相互赋值 26. 有关复制构造函数说法错误的是 ( ) A.复制构造函数不能使用初始化列表 B. 复制构造函数不能有返回值 C. 复制构造函数名与类名相同并能够有多个复制构造函数 D. 复制构造函数的参数能够为引用对象 27.对友元函数描述正确的是 ( ) A.一个类的友元函数是该类的一个特殊成员函数 B.一个类的友元函数能够访问类的所有数据成员 C.友元函数只允许访问该类对象的私有成员 D.友元函数只允许访问该类的公有成员 28.进行文件操作时需要包含的头问家是 ( ) A.iostream.h B. fstream.h C.stdio.h D. stdlib.h 29. 下面关于类模板叙述不正确的是 ( ) A.声明类模板”; ”号结束 B.不能重载运算符 C.能够使用友元函数 D.能使用虚函数 30.系统不会为类自动建立什么成员函数 ( ) A.默认构造函数 B.默认析构函数 C.默认虚析构函数 D.默认赋值运算赋 二、 填空题: 1.函数 int * func(void)的返回类型是__ _ __. 2.C+ +中, 关键字 用作联合. 3.关键字virtual能够用来声明 类. 4.抽象类至少要含有一个 ,这种函数属于虚函数 5.成员函数”void print( )const;”是类的 函数, 它只能被const对象调用。 6.声明double的转换函数是 。 7.模板分为 模板和类模板。 8.类群是由一些彼此互不相关的 组成。 9.类的作用于限定符是 。 10..Base(Base&)是类Base的_ __函数的原型声明,它的等效形式为Base(const Base&)。 11.要想取消动态联编,能够使用 ,它的另一个基本用途是避免两义性. 12.声明double的转换函数是 。 13.根据类对其成员的要求, 可把类分为 模板和无约束模板。 14.在面向对象程序设计时, 函数一定既提供了接口也提供了实现。 15.函数func(int &a)里面使用return; 语句, 则函数的返回值类型为_ _. 16.一般使用类中的 函数供类内部的成员函数使用, 能够实现更好的封装性。 17.成员名限定的符号是_ _,它能够在引用成员时避免两义性. 18.对类的构造函数而言,析构函数能够为虚函数, 不能够为虚函数. 19.指向类成员的指针引入了新的运算符 和->*. 20.使用友元重载提取符函数时, 它的第2个参数必须使用 形式。 21.一个模板声明能够列出多个参数, 多个参数之间必须使用 隔开。 20.设计类的基本原则应该是 。 22.语句int * x=new int(58);使*x . 23.如果要为其它对象提供相互作用的接口, 能够通时 函数实现。 24.空类Empty的声明形式为 。 25.只有 继承的情况下, 基类的派生类之间才有赋值兼容性规则。 26.产生多态性要求类之间的继承关系满足 。 27.使用友元重载提取符函数时, 它的第2个参数必须使用 形式。 28.类群是由一些彼此互不相关的 组成。 三、 改错题 1.指出下面程序段中的错误。 const int R= 15; R=3 *R; int m =50-R; cout << m < <endl; 2.找出以下程序中的错误,并说明原因。 # include < iostream.h> class base { int m, n; public: base(int a, int b): m(b), n(a) void Disp( ){cout<<m<<", "<<n<<endl; } }; 3.找出以下程序中的错误, 并说明错在何处。 # include <iostream.h> class base { int m; public: base(int a):m(a){}; int Getx(){retum m;} }; class derived : private base { int n; public: derived(int a, int b):m(a){n=b;}; }; 4.改正下面程序段中的错误, 使其能正确输出数组第五项的内容。 # include <iostream.h > void main() { int *p , a[5] = {1,2,3,4,5} ; p =&a[5]; cout < <p < < endl; } 5.找出类定义中的错误并说明理由。 class base { private: int x, y; void setxy(int a, int b)}{x=a; y=b} public: void show (base * p) {cout<<p->x<<”, ”<<p->y; } 6.找出以下程序中的错误,并说明原因。 # include < iosteream.h> class base { int p; public: base(int a){p=new int(a); } int Getx( ){return m; } ~ base( ){delete p} }; 7.仔细阅读下面程序, 其中有一个成员函数定义不正确, 找出并改正错误。 #include <iostream.h> class A { int a; public: A(int m):a(m){} A(A&t):a(t){} }; class B:public A { int b; public: B(int m, int n){a=m;b=n;} }; 8.指出下面程序中的错误。 # include < iostream.h> void main( ) { int * pa; int * &pb= pa; int x = 386; pb =&x; cout<<*pb<<endl; cout<<*pa<<endl; delete pb; } 9.找出下面程序中的错误并给出正确的运行结果。 # include <iostream.h> class base { private: int x, y; public: void setxy(int a, int b) {x=a; =b} void show(base &b) {cout<<b.x<<”, ”<<b.y; } }; void main( ) { base a; a.setxy(28, 59) a.show(&a); } 10.下面是使用类A的主函数, 改正其中的错误。 void main( ) { A p[2]={ (new A), ( new A) } for( int i=0; i<2; i+ +) delete A[i]; } 11.指出下面程序段中的错误。 const int R= 15; R=3 *R; int m =50-R; cout << m < <endl; 12.下面是使用类A的主函数, 改正其中的错误。 void main( ) { A p[2]={ (new A), ( new A) } for( int i=0; i<2; i+ +) delete A[i]; } 13.仔细阅读下面程序, 其中有一个成员函数定义不正确, 找出并改正错误。 #include <iostream.h> class A { int a; public: A(int m):a(m){} A(A&t):a(t){} }; class B:public A{ int b; public: B(int m, int n){a=m;b=n;} }; 14.给出类声明中的转换函数的定义。 Class number{ private: int val; public: number( int I ) { val =I;} operator int(); }; 四、 完成程序题 1.在下面程序中的下划线处填上内联fun函数的原型声明、 返回类型和调和调用语句。 # include<iostream.h> void main() ﹛ int a=5; int b=8; cout<<a<<endl; cout<<b<endl; ﹜ inline void fun(int& m,int& n) ﹛ int temp=m; m=m+n; n=temp-n; ﹜ 2.在下面的主程序中只允许显式地使用一次set成员函数, 在下划线处填上适当的程序, 使程序的输出为: 589589 #include<iostream.h> class base { private: int x; public: void set(int a){x=a;} void show() { ______ ______} }; void main() { base a,b; a.set(589); a.show(); __ b.show; } 3.完成下面程序, 使其输出为: -2.589000e +001 +2.589000e +001 程序如下: # include <iostream.h> void main() { cout.setf(ios::scientific | ios::left | ios::showpos); cout << -25.89F << endl; cout<< 25.89f << endl; } 4.使用内联函数重新定义下面求两个整数最小值的宏定义。 #define MAX(a,b)(a<b? a:b) 解: inline int MAX(int a, int b) { return a<b?a:b; } 5.下面是类test的两个成员函数的定义, 根据它们的定义, 给出最小的类声明形式, 其 中数据成员为私有, 成员函数使用原型声明。 test::tese(int a,int b) {m=a;n=b} void test::show() {cout<<m<<”,”<<n<<endl;} 6.给出类声明中的转换函数的定义。 class number{ private: int val; public: number( int i ) { val =i;} operator int(); }; 7.完成一面程序, 使其输出”56 56”, 并在退出运行时正确释放分配给指针的存储空间。所给程序如下: # include <iostream.h> void main ( ) { int *a=int new(56); int cout<<*a<<""<<*p<<endl; } 8.在下面程序的下划线处填上正确的语句, 使类的数据成员i的值为20, 输出为35。 #include <iostream.h> class sum { public: void disp( ){cout <<i+j<<endl;} }; void main( ) { Sum a= ; a.disp( ); } 9.根据下面的主程序, 补上所缺类说明文件的最小形式( 成员函数使用原型声明) 。 # include(iostream h) # include ”base.h” void main() { base obj(1,2,3); base obj2(obj1); } 10.在主函中的下划线处填上正确的语句使程序输出并说明理由。 A place. Here is B place . Here is B place. 程序如下: class B: public A { public: void display(char*b){cout<<”Here is”<<b<<endl;} }; void main() { A a,*pa; display(__ _ _ ); B b; b.display(B place ); pa=_ ____; pa->display(B place ); } 11.完成一面程序, 使其输出”56 56”, 并在退出运行时正确释放分配给指针的存储空间。所给程序如下: # include <iostream.h> void main ( ) { int *a=int new(56); int cout<<*a<<""<<*p<<endl; } 12.在下面程序的下划线处填上正确的语句, 使类的数据成员i的值为20, 输出为35。 #include <iostream.h> class sum { public: void disp( ){cout <<i+j<<endl;} }; void main( ) { Sum a= ; a. disp( ); } 13.给出类声明中的转换函数的定义。 Class number{ private: int val; pnblic: number( int I ) { val =I;} operator int(); }; 五、 程序分析题 1.# include < iostream.h > void main () { int n=333; int&m =n; cout<< m; m=m+150; cout<<” ”<<n; n=n-150; cout<<” ”<<m; } 2.分析下面程序的输出结果。 # include<iostream.h> class base { char c; public: void change(char a) {c=a+32; cout<<c<<endl; } }; void main( ) { base a; a.change(′A′); a.change(′B′); } 3.分析下面程序的输出. # include<iostream.h> class base { int num; public: base(int x) {num=x; cout<<”Initializing num=”<<num<<endl;} }; void main() { cout<<”Entering main” <<endl; cout<<”Exiting main<< endl; } static base a(548); 4.分析下面程序的输出结果。 # include < iostream.h > # include < iomanip.h > void main( ) { cout < < oct < < 15 < < endl: cout < < hex < <15 < < endl: cout < <setflii(‘a’ ) < < setw (10 ): cour < <256 < < ”OK” < < endl: } 5.分析下面程序输出结果。 #include <iostream.h> void f ( ) { static int n=25; n -- ; cout < < ”n=”<<n<<” ”; } void main ( ) {for (int i=0; i<= 2 ; i+ +) f ( ); } 6.分析下面程序的输出结果 class base{ public: int x; void setx(int a){x=a;} int getx( ){return x;} }; # include <iostream.h> void main( ) { base a={125},b; b=a; cout<<a.x<<endl; cout<<b.getx( )<<endl; } 7.分析下面程序的输出 # include<iostream.h> class base { private: int a; public: ~ base( ) { cout<<"析构…"<<a<< endl ; } base (int a=0) : a(a) { cout <<"初始化..."<<a<<endl; } } ; void main( ) { base a(8),b; } 8.分析下面程序的输出结果。 # include < iostream.h> # include < iomanip.h > Viod main ( ) { Cout <<setfill ( ”a” ) < <setw ( 0 ) < < 15 < < endl < <setw ( 1 ) < < 15 < < endl < <setw ( 4 ) < < 15 < < endl: Cout < < setw ( 8 ) < <setfill ( ”a”) < < endl: Cout< < setiosfiags (ios: : right ) < < setw( 4 )< < 1 < < setw( 4 )< < 2 < < endl: Cout< < setiosfiags (ios: : left ) < < setw( 4 )< < 1 < < setw( 4 )< < 2 < < endl: } 9.分析下面程序的输出结果。 #include<iostream.h> class base { Private: int x,y; public: void setxy(int a,int b){x=a;y=b;} void show(base *p) {cout<<p->x<<”,”<<p->y;} }; void main() { base a;} a.setxy(25, 39) b.show(&a); } 10.分析下面程序的输出结果。 #include < iostream.h> void main( ) { int x = 56; int *a; int *&p=a; p=new int(x +2); cout < <*p < <endl; cout < < a[0] < < endl; cout<<x<<endl; } 11.分析下面程序的输出结果。 #include<iostream.h> class base { Private: int x,y; public: void setxy(int a,int b){x=a;y=b;} void show(base *p) {cout<<p->x<<”,”<<p->y;} }; void main() { base a; a.setxy(25, 39) a.show(&a); } 12.分析下面程序的输出结果。 # include <iostream.h> class A { int a; pubic: A(int a=0):a(a){ cout<<a<<endl;} void show(){cout<<a<<endl;} }; class B{ A al; int b public: B(int m, int n):al(m),b(n){} Void show(){al.show();cout<<b<<endl;} }; void main() { B b(256.285),c(b); c.show() } 13.分析程序功能并给出输出结果。 # include < iostream .h > # include < fstream .h > Viod main ( void ) { Fstream fin,fout; Fout.open(”my.txt”,ios::out); If(! fout.is_open()) Retnrn; For(int i=0;i<=10;i=i+2) Fout<<”This is line”<<i+1<<endl; Fout.close(); Fin.open(”my.txt”ios::in); If(! Fin.is_open()) Return; Char str[100]; While(! Fin.eof()){ Fin.getline(str,100); Cout<<str<<endl; } Fin.close(); } 14.分析下面程序的输出结果。 # include <iostream.h> class A { int a; pubic: A(int a=0):a(a){cout<<a<<endl;} A(A&t){a=t.a;cout<<a<<endl;} }; class B{ A al; Int b; public: B(int m,int n)Lm),b(n){} B(B&t):al(t.al){b=t.b;} Void show(){al.show();cout<<b<<endl;} }; void main() { B b(256.285); B c(b); c.show(); } 15.# include < iostream.h > void main () { int n=333; int&m =n; cout<< m; m=m+150; cout<<” ”<<n; n=n-100; cout<<” ”<<m; } 16.分析下面程序的输出结果。 #include<iostream.h> class base { Private: int x,y; public: void setxy(int a,int b){x=a;y=b;} void show(base *p) {cout<<p->x<<”,”<<p->y;} }; void main() { base a; a.setxy(25, 39) a.show(&a); } 17.分析程序功能。 # include <iomanip.h> Void main() { For(int i=0;i<10;i++) Cout<<endl<<setw(10-i)<<’*’<<setw(10)<<’*’; } 18.分析下面程序的输出结果。 # include <iostream.h> class A { protected int m public: void Disp(){c- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 面向 对象 程序设计 资料 整理 长大
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【天****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【天****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【天****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【天****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文