C++笔试题目-带答案.doc
《C++笔试题目-带答案.doc》由会员分享,可在线阅读,更多相关《C++笔试题目-带答案.doc(10页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、如有侵权,请联系网站删除,仅供学习与交流C+笔试题目-带答案【精品文档】第 10 页姓名:_时间:_DCCBB AADAD一、选择题(1*10=10)1如果派生类以proctected方式继承基类,则原基类的protected和public成员在派生类的访问性分别是:DApublic和publicBpublic和protectedCprotected和publicDprotected和protected解析:通过protected方式继承基类后,原基类的私有成员不可访问,而protected和public成员均变成protected成员。答案:D2有如下头文件:int F1();static
2、int F2();classs CApublic:int F3();static int F4();在所描述的函数中,具有隐含this指针的是:CAF1BF2CF3DF4 本题考查的是this指针。 this指针式一个隐含的指针,它隐含于每个类的非静态成员函数中,它明确地表示出了成员函数当前操作的数据所属的对象。当对一个对象调用成员函数时,编译程序先将对象的地址赋值给this指针,然后调用成员函数,每次成员函数存取数据成员时,则隐含使用this指针。 this指针是指向对象本身的指针,它只存在于类的非静态成员中。f1,f2不是成员函数,不存在隐含指针;f4为静态成员函数,也不含有this指针;
3、含有this指针的函数在调用时按thiscall调用约定调用。故本题答案为C。3派生类的成员函数不能访问基类的:CA共有成员和保护成员B共有成员C私有成员D保护成员 本题考查的是继承的类型。 类的继承方式有公有继承、保护继承和私有继承三种方式。对于公有继承基类中的成员访问属性不变,对于保护和私有继承基类中的成员转换为相应的访问类型。但是如果基类成员的访问属性为private的,则不能被继承。故本题答案为C。4按照“后进先出”原则组织数据的数据结构是BA队列B栈C双向链表D二叉树答案为B。5下列关于虚函数的说明中,正确的是:BA从虚基类继承的函数都是虚函数B虚函数不得是静态成员函数C只能通过指针
4、或者引用调用虚函数D抽象类中的中的成员函数都是虚函数。答案为B。6已知Value是个类,value是Value的一个对象。下列以非成员函数形式重载的运算符函数原型中,正确的是:AAValue operator+(Value v, int i);BValue operator+(Value v=value, int i);CValue operator+(Value v, int=0);DValue operator+(Value v=value, int i=0);7有如下类的定义:Class MyClassint value;public:MyClass(int n):value(n)int
5、 getValue() const return value;则类Myclass的构造函数的个数是:AA1个B2个C3个D4个还有默认拷贝构造函数, 应该选B8有如下类的定义:class Constantspublic:static double GetPI(void)return 3.14159;Constants constants;下列各组语句中,能输出3.14159的是:BAcoutGetPI();和coutConstants:GetPI();Bcoutconstants.GetPI();和coutConstants.GetPI();CcoutGetPI();和coutGetPI();
6、Dcoutconstants.GetPI();和coutConstants:GetPI();9有如下程序:#include using namespace std;class VACpublic:int f() constreturn 3;int f()return 5;int main()VAC v1;const VAC v2;coutv1.f()v2.f();return 0;运行时的输出结果是:AA53B35C55D3310有如下类声明:class Baseprotected:int amount;public:Base(int n = 0):amount(n)int getAmount
7、() const return amount;class Derived:public Baseprotected:int value;public:Derived(int m, int n):value(m),Base(n)int getData() const return value + amount;已知x是一个Derived对象,则下列表达式中正确的是:DBAx.value + x.getAmount();Bx.getData() + x.getAmount();Cx.getData() x.amount;Dx.value + x.amount;二、填空题(8*2=16)400_ 6
8、 4 4 4 4 return *this _ Dog speak Voice 1.下列中a的值是_400_#define AAA 200#define BBB AAA+100int a= BBB*22. 以下为Windows NT下的32位C+程序,请计算sizeof的值。char str = “Hello” ;char *p = str ;int n = 10;请计算sizeof (str ) = _5_sizeof ( p ) = _4_sizeof ( n ) = _4_void Func ( char str100)/请计算sizeof( str ) =_4_void *p = ma
9、lloc( 100 );/请计算sizeof ( p ) =_4_ 3. 补充完整下面的类定义:class XCH char* a;public: XCH(char* aa) /构造函数 a=new charstrlen(aa)+1; strcpy(a,aa); XCH& operator=(const XCH& x) /重载赋值函数 delete a; a=new charstrlen(x.a)+1; strcpy(a,x.a); _; XCH()delete a;_ return *this _4. 请写出下面程序的输出结果#includeusing namespace std;class
10、 Animal public: virtual char* getType() const return Animal; virtual char* getVoice() const return Voice;class Dog:public Animalpublic: char* getType() const return Dog; char* getVoice() const return Woof;void type(Animal& a) couta.getType();void speak(Animal a) couta.getVoice();int main() Dog d;typ
11、e(d);cout speak ;speak(d);coutendl; return 0;_ Dog speak Voice _三、问答题(5*10+9+15=74)1.编写类String的拷贝构造函数和赋值函数(可以调用C+/C的字符串库函数)(15)。 已知类String的原型为:class Stringpublic: String(const char *str = NULL); / 普通构造函数 String(const String &other); / 拷贝构造函数 String(void); / 析构函数 String & operate =(const String &othe
12、r); / 赋值函数private:char *m_data; / 用于保存字符串请编写String的上述4个函数。/ String的析构函数 String:String(void) / 3分 delete m_data; / 由于m_data是内部数据类型,也可以写成 delete m_data; / String的普通构造函数 String:String(const char *str) / 6分 if(str=NULL) m_data = new char1; / 若能加 NULL 判断则更好 *m_data = 0; else int length = strlen(str); m_d
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 笔试 题目 答案
限制150内