最新全国计算机等级考试二级c++题库3(共17套)_第1页
最新全国计算机等级考试二级c++题库3(共17套)_第2页
最新全国计算机等级考试二级c++题库3(共17套)_第3页
最新全国计算机等级考试二级c++题库3(共17套)_第4页
最新全国计算机等级考试二级c++题库3(共17套)_第5页
已阅读5页,还剩13页未读 继续免费阅读

VIP免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

.6第三套1、在面向对象方法中,实现信息隐蔽是依靠_。A、对象的继承B、对象的多态C、对象的封装D、对象的分类 信息隐蔽是指采用封装技术,将程序模块的实现细节隐藏起来,使模块接口尽量简单。故本题答案为C。2、下列叙述中正确的是_。A、为了建立一个关系,首先要构造数据的逻辑关系B、表示关系的二维表中各元组的每一个分量还可以分成若干数据项C、一个关系的属性名表称为关系模式D、一个关系可以包括多个二维表 为了建立一个关系,首先要指定关系的属性,所以选项A是错误的。表示关系的二维表中各元组的每一个分量必须是不可分的基本数据项,所以选项B是错误的。在关系数据库中,把数据表示成二维表,而一个二维表就是一个关系,所以选项D是错误的。一个关系的属性名表称为该关系的关系模式,其记法为:(,)。故本题答案为C。3、下列叙述中,不符合良好程序设计风格要求的是_。A、程序的效率第一,清晰第二B、程序的可读性好C、程序中要有必要的注释D、输入数据前要有提示信息 要形成良好的程序设计风格,主要应注重和考虑下述一些因素:符号名的命名应具有一定的实际含义,以便于对程序功能的理解;正确的注释能够帮助读者理解程序;程序编写应优先考虑清晰性,除非对效率有特殊要求,程序编写要做到清晰第一,效率第二。故本题答案为A。4、一棵二叉树中共有70个叶子结点与80个度为1的结点,则该二叉树中的总结点数为_。A、219B、221C、229D、231 二叉树的性质3:在任意一棵二叉树中,度为0的结点(即叶子结点)总是比度为2的结点多一个。本题中度为2的结点数为70-1=69,该二叉树中的总结点数为70+80+69=219。故本题答案为A。5、冒泡排序在最坏情况下的比较次数是_。A、n(n+1)/2B、C、n(n-1)/2D、n/2 冒泡排序法是一种最简单的交换类排序方法,它是通过相邻数据元素的交换逐步将线性表变成有序。 假设线性表的长度为n,则在最坏的情况下,冒泡排序需要经过n/2遍的从前往后的扫描和n/2遍的从后往前的扫描,需要的比较次数为n(n-1)/2。故本题答案为C。6、软件调试的目的是_。A、发现错误B、改正错误C、改善软件的性能D、验证软件的正确性 软件调试的目的是诊断和改正程序中的错误,改正以后还需要再测试。故本题答案为B。7、下列叙述中正确的是_。A、数据库系统是一个独立的系统,不需要操作系统的支持B、数据库技术的根本目标是要解决数据的共享问题C、数据库管理系统就是数据库系统D、以上三种说法都不对 为了解决多用户、多应用共享数据的需求,使数据为尽可能多的应用服务,数据管理的最新技术-数据库技术应运而生。 数据库系统由如下几部分组成:数据库、数据库管理系统、数据库管理员、系统平台(硬件平台和软件平台),所以选项A、C是错误的。故本题答案为B。8、下列叙述中正确的是_。A、数据的逻辑结构与存储结构必定是一一对应的B、由于计算机存储空间是向量式的存储结构,因此,数据的存储结构一定是线性结构C、程序设计语言中的数组一般是顺序存储结构,因此,利用数组只能处理线性结构D、以上三种说法都不对 数据的逻辑结构在计算机存储空间中的存放形式称为数据的存储结构。一种数据的逻辑结构根据需要可以表示成多种存储结构,常用的存储结构有顺序、链接、索引等。而采用不同的存储结构,其数据处理的效率是不同的。因此,在进行数据处理时,选择合适的存储结构是很重要的,所以选项A是错误的。 根据数据结构中各数据元素之间前后件关系的复杂程度,一般将数据结构分为两大类型:线性结构和非线性结构,所以选项B是错误的。 数组既可以处理线性结构也可以处理非线性结构,所以选项C是错误的。故本题答案为D。9、软件是指_。A、程序B、程序和文档C、算法加数据结构D、程序、数据与相关文档的完整集合 计算机软件是计算机系统中与硬件相互依存的另一部分,是程序、数据及相关文档的完整集合。故本题答案为D。10、下列叙述中正确的是_。A、程序执行的效率与数据的存储结构密切相关B、程序执行的效率只取决于程序的控制结构C、程序执行的效率只取决于所处理的数据量D、以上三种说法都不对 所谓提高程序执行的效率,主要包括两个方面:一是提高数据处理的速度,二是尽量节省在数据处理过程中所占用的计算机存储空间。故本题答案为A。11、如果派生类以protected方式继承基类,则原基类的protected成员和public成员在派生类中的访问属性分别是_。A、public和publicB、public和protectedC、protected和publicD、protected和protected 本题考查的是派生类。 派生类中的成员不能访问基类中的私有成员,可以访问基类中的公有成员和保护成员。此时派生类对基类中各成员的访问能力与继承方式无关,但继承方式将影响基类成员在派生类中的访问控制属性。故本题答案为D。12、以下关于类模板的模板参数的叙述中,错误的是_。A、模板参数可以作为数据成员的类型B、模板参数可以作为成员函数的返回类型C、模板参数可以作为成员函数的参数类型D、模板参数不能作为成员函数的局部变量的类型 本题考查模板的作用。 模板的作用:模板它提供的是一个框架,待你提供真正的参数后,它便有了一个实例。类模板定义不同类型的成员:成员函数、静态数据成员和嵌套的类型。模板参数也可以作为成员函数的局部变量的类型。故本题答案为D。13、语句int *p=&k;定义了指针p ,与这个语句等效的语句序列是_。A、int *p;p=&k;B、int *p;p=k;C、int *p;*p=&k;D、int *p;*p=k; 本题考查的是指针。 一个指针是一个特定类型数据的存储地址,比如一个变量的地址。在使用任何指针变量之前必须先给它赋一个所指合法具体对象的地址值。 语句int *p=&k;定义了一个指向变量k地址的int类型的指针p,此定义方法是在定义过程中同时赋初始值。选项A中int *p;p=&k;是先定义了一个指针p,然后将变量k的地址赋给指针p,与题目中的语句int *p=&k;等效。故本题答案为A。14、有如下程序:#include using namespace std;class MyClasspublic: MyClass(int x):val(x) void Print() const coutconst:val=valt; void print() coutval=valt;private: int val;int main() const MyClass obj1(10); MyClass obj2(20); obj1.Print(); obj2.Print(); return 0;程序的输出结果是_。A、val=10 const:val=20B、const:val=10 const:val=20C、const:val=10 val=20D、val=10 val=20 本题考查的是构造函数调用顺序。 const MyClass obj1(10);首先定义了MyClass的const对象obj1,并初始构造函数参数为x=10。构造函数通过:val(x)将x的值给val。 MyClass obj2(20);定义MyClass的对象obj2,并初始构造函数参数为x=20。构造函数通过:val(x)将x的值给val。 obj1.Print();调用Obj1对象中的Print()函数,输出obj1对象成员变量val的当前值,即输出const:val=10。 obj2.Print();调用Obj2对象中的Print()函数,输出obj2对象成员变量val的当前值,即输出const:val=20。故本题答案为B。15、有如下程序:#include using namespace std;class Basepublic: void output() cout1; virtual void Print()coutB;class Derived : public Basepublic: void output() cout2; void Print() coutoutput(); ptr-Print(); delete ptr; return 0;程序的输出结果是_。A、1BB、1DC、2BD、2D 本题考查的是虚函数。 virtual void Print()coutoutput();因为指针ptr是基类的对象。所以在执行output()方法时会调用基类的output()方法,也就是Base类的output()方法。不会调用Derived类的output()方法,因为output()不是虚函数。输出1。 ptr-Print(); 因为Print();在基类Base中申明是虚函数,所以在子类中如果有继承此方法就会调用子类的这方法。所以这个调用的是Derived类的Print();方法。输出D。故本题答案为B。16、必须用一对大括号括起来的程序段是_。A、switch语句中的case标号语句B、if语句的分支C、循环语句的循环体D、函数的函数体 本题考查的是函数的函数体。 由一对花括号括起来的是语句的序列,它定义了函数应执行的具体操作。 if语句的分支和循环语句的循环体通常使用花括号括起来;switch语句中的case标号语句后加的是冒号:。故本题答案为D。17、下列关于运算符重载的描述中,正确的是_。A、运算符重载为成员函数时,若参数表中无参数,重载的是一元运算符B、一元运算符只能作为成员函数重载C、二元运算符重载为非成员函数时,参数表中有一个参数D、C+中可以重载所有的运算符 本题主要考查了运算符重载。 一元运算符还可以作为全局函数重载,所以选项B错误。 二元运算符重载为非成员函数时,参数表中有两个参数,所以选项C错误。 有些运算符不能被重载,如域运算符(:),条件运算符(?:)等,具体哪些运算符不能被重载与编译器有关,所以选项D错误。故本题答案为A。18、C+中的模板包括_。A、对象模板和函数模板B、对象模板和类模板C、函数模板和类模板D、变量模板和对象模板 本题考查的是C+中的模板,包括函数模板和类模板。 函数模板是一系列相关函数的模型或样板,这些函数的源代码形式相同,只是所针对的数据类型不同。 类模板就是一系列相关类的模型或样板,这些类的成员组成相同,成员函数的源代码形式相同,所不同的只是所针对的类型。故本题答案为C。19、如果利用C+流进行输入输出,下面的叙述中正确的是_。A、只能借助于流对象进行输入输出B、只能进行格式化输入输出C、只能借助于cin和cout进行输入输出D、只能使用运算符和、和get()、getline()、put()、write()函数也可以进行输入输出。故本题答案为A。20、在函数中,可以用auto 、extern、register和static这四个关键字中的一个来说明变量的存储类型,如果不说明存储类型,则默认的存储类型是_。A、autoB、externC、registerD、static 本题考查的是C+的变量类型。C+中的变量类型分为如下几种: auto-函数内部的局部变量。(auto可以省略不写)一个局部变量如果没有用于存储类别定义符说明时,则自动被说明为auto。 static-静态存储分配,又分为内部和外部静态。 extern-全部变量(用于外部变量说明)。 register-变量存储在硬件寄存器中。故本题答案为A。21、下列符号中不属于C+关键字的是_。A、friendB、namespaceC、continueD、byte 本题考查的是C+关键字。 关键字也称保留字,它是由C+语言本身预先定义好的一类单词。 详细请见C+关键字表。故本题答案为D。22、有如下头文件:int f1();static int f2();class MApublic: int f3(); static int f4();在所描述的函数中,具有隐含的this指针的是_。A、f1B、f2C、f3D、f4 本题考查的是this指针。 this指针式一个隐含的指针,它隐含于每个类的非静态成员函数中,它明确地表示出了成员函数当前操作的数据所属的对象。当对一个对象调用成员函数时,编译程序先将对象的地址赋值给this指针,然后调用成员函数,每次成员函数存取数据成员时,则隐含使用this指针。 this指针是指向对象本身的指针,它只存在于类的非静态成员中。f1,f2不是成员函数,不存在隐含指针;f4为静态成员函数,也不含有this指针;含有this指针的函数在调用时按thiscall调用约定调用。故本题答案为C。23、下列各组类型声明符中,含义相同的一组是_。A、unsigned long int和longB、signed short int和shortC、unsigned short和shortD、short int和int 本题考查的是符号常量声明。 整型常量除包括基本整型(int)外,还包括短整型(short int)、长整型(long int)、无符号型(unsigned)。若整型常量为无符号型则在表示时需要在前面加上unsigned,若没加unsigned则默认表示为有符号型(signed),因此选项A、C错误; 选项D中int表示整型,short int表示短整型,含义不同,所以错误; 选项B表示有符号的短整型,有符号(signed)可以隐藏,同时short int可以表示为short,因此选项B正确。故本题答案为B。24、有以下程序:#include using namespace std;class Bpublic: virtual void show()coutB; ;class D: public Bpublic: void show() coutshow(); void fun2(B &ref) ref.show();void fun3(B b ) b.show();int main() B b,*p=new D; D d; fun1(p); fun2(b); fun3(d); return 0;程序运行的输出结果是_。A、BBBB、BBDC、DBBD、DBD 本题考查的是虚函数的用法,及虚函数被继承后的相互调用关系。 首先通过B类生成b对象,通过B类生成*p对象指针并申请D类内存结构赋给*p。然后通过D类生成d。 调用fun1函数,参数地址传递p指针地址。因为B.show()是虚函数,所以调用D.show();输出D。 调用fun2函数,参数引用传递对象b,所以调用B.show();输出B。 调用fun3函数,参数对象d;参数b=d地址。所以调用B.show();输出B。 所以输出结果DBB。故本题答案为C。25、若有如下类定义:class B void fun1()protected: double var 1;public: void fun2();class D: public Bprotected: void fun3() ;已知obj是类D的对象,下列语句中不违反类成员访问控制权限的是_。A、obj.fun1();B、obj.var1;C、obj.fun2();D、obj.fun3() 本题考查的是类成员的访问控制。 类中提供了3中访问控制权限:公有(public)、私有(private)和保护(protected)。 B类中成员定义访问权限为:fun1()为私有,var1为保护,fun2为公共类D公共继承B类结构,继承结构不改变成员权限。 因为对象外部调用成员,只能访问(公共)Public权限成员,仅fun2()为Public权限。故本题答案为C。26、有如下程序:#include using namespace std;class Partpublic: Part(int x=0):val(x) coutval; Part()coutval;private: int val;class Wholepublic: Whole(int x,int y,int z=0):p2(x),p1(y),val(z) coutval; Whole()coutval;private: Part p1,p2; int val;int main() Whole obj(1,2,3); return 0;程序的输出结果是_。A、123321B、213312C、213D、123123 本题考查的是类以及类的构造函数。 class Whole public: Whole(int x,int y,int z=0):p2(x),p1(y),val(z)coutval; Whole()coutval; private: Part p1,p2;/定义时间的顺序跟那个 int val; 在定义类Whole的私有成员时,Part p1,p2; 定义对象p1在p2前。所以在执行Whole(int x,int y,int z=0):p2(x),p1(y),val(z) coutval;,创建对象时先执行p1(y)构造方法,再执行p2(x)构造方法。 Whole obj(1,2,3);创建Whole类对象obj这时调用Whole类的构造方法Whole(int x,int y,int z=0):p2(x),p1(y),val(z) coutval;,得到 x=1,y=2,z=3,在执行:p2(x),p1(y),val(z)方法,因为对象p1在p2定义前,所以先构造对象p1也就执行p1(2),调用Part类的Part(int x=0):val(x) coutval;方法,输出2,接着构造p2对象,执行p2(1) 输出1。 再执行val(z)给val赋值为3再执行方法体的语句coutval;输出3。 现在所有对象构造完了,开始析构对象了。因为析构与构造相反,所以先析构z再p2再p1,输出为312。总体输出就是213312。故本题答案为B。27、有如下程序:#include using namespace std;class MyClasspublic: MyClass() +count; MyClass() -count; static int getCount() return count;private: static int count;int MyClass:count=0;int main() MyClass obj; coutobj.getCount(); MyClass *ptr=new MyClass; coutMyClass:getCount(); delete ptr; coutMyClass:getCount(); return 0;程序的运行结果是_。A、121B、232C、221D、122 本题考查的是类的构造函数。 int MyClass:count=0;的意思是初始化静态变量count=0; MyClass obj;是指创建类MyClass对象obj,这时会执行类MyClass的构造方法MyClass() +count;,得到count=1,coutobj.getCount();输出1。 MyClass *ptr=new MyClass;创建类MyClass指针对象*ptr,这时会执行类MyClass的构造方法MyClass()+count;得到count=2,coutMyClass:getCount();输出2。 delete ptr;删除指针对象,这时会调用析构方法MyClass()-count;,得到count=1,coutMyClass:getCount();输出1。故本题答案为A。28、有以下程序:#include using namespace std;class Basepublic: Base(int x=0) coutx;class Derived : public Basepublic: Derived(int x=0) coutx;private: Base val;int main() Derived d(1); return 0;程序的输出结果是_。A、0B、1C、01D、001 本题考查的是类的相关知识。 Base val;因为类Derived 有个Base类的对象val为私有变量。所以在给这类创建对象时会创建Base val;对象。 在Derived d(1);创建对象d时先创建Base的对象val,执行Base类的Base(int x=0) coutx;方法,输出0; 接着创建 类Derived对象d 执行类Derived的带一个参数的构造方法Derived(int x=0) coutx;,在执行前因为类Derived是公共继承类Base所以先执行基类的构造方法Base(int x=0) coutx;输出0(这个方法是给参数赋默认值的;int x=0意思是如果没有传参数过来就以0表示这个参数的值); 执行完基类的构造方法后执行自已的构造方法。因为传的参数为1所以输出1。故本题答案为D。29、对于一个类定义,下列叙述中错误的是_。A、如果没有定义拷贝构造函数,编译器将生成一个拷贝构造函数B、如果没有定义缺省的构造函数,编译器将一定生成一个缺省的构造函数C、如果没有定义构造函数,编译器将生成一个缺省的构造函数和一个拷贝构造函数D、如果已经定义了构造函数和拷贝构造函数,编译器不会生成任何构造函数 本题考查的是类的定义。 类是一种用户自定义的类型,声明一个类对象时,编译程序需要为对象分配存储空间,进行必要的初始化。在C+中这项工作是由构造函数来完成的。构造函数的作用是在对象被创建时利用特定的值构造对象,将对象初始化为一种特定的状态,使该对象具有区别于其他对象特征。构造函数在对象被创建的时候由系统自动调用。故本题答案为B。30、关于函数重载,下列叙述中错误的是_。A、重载函数的函数名必须相同B、重载函数必须在参数个数或类型上有所不同C、重载函数的返回值类型必须相同D、重载函数的函数体可以有所不同 本题考查的是函数的重载。 函数重载允许用同一个函数名定义多个函数。被重载的函数必须要有不同的形参列表。不可以根据函数返回值类型来重载函数。函数重载是用同一个函数名在不同的参数上做不同的事情。对于仅仅是函数的返回值不同,其它参数全部相同,不是重载。如果出现这种况,会在编译产生错误。故本题答案为C。31、已知一程序运行后执行的第一个输出操作是coutsetw(10)setfill(*)1234; 则此操作的输出结果是_。A、1234B、*1234C、*1234D、1234* setw(10)表示要输出10个宽度。 setfill(*)表示没有达到宽度要求的用*替换。 1234表示操作的数据,因此前应该有6个*。故本题答案为B。 32、如下函数的作用是以双倍行距输出文件:void double_space(ifstream& f, ofstream& t) char c; while(_) _; if(c=n)t.put(c); 画线缺失的部分是_。A、f.get(c)与t.put(c)B、f.put(c)与t.get(c)C、t.get(c)与f.put(c)D、t.put(c)与f.get(c) 本题考查的是文件流的输入输出。 文件流以磁盘文件以及其他可按文件方式进行管理的外部设备为输入输出对象。 ifstream是文件输入流类,只能用于输入,它没有提供任何用于输出的操作。 ofstream是文件输出流类,只能用于输出,它没有提供任何用于输入的操作。 fstream是文件输入输出流类。 f.get(c)为获得一个字符; t.put(c)为输出一个字符,因为if(c=n) t.put(c);此句,当c为间格字符(行距字符)时,再多输出一次t.put(c)。故本题答案为A。33、派生类的成员函数不能访问基类的_。A、公有成员和保护成员B、公有成员C、私有成员D、保护成员 本题考查的是继承的类型。 类的继承方式有公有继承、保护继承和私有继承三种方式。对于公有继承基类中的成员访问属性不变,对于保护和私有继承基类中的成员转换为相应的访问类型。但是如果基类成员的访问属性为private的,则不能被继承。故本题答案为C。34、以下运算符函数中肯定不属于类FunNumber的成员函数的是_。A、int operator-(FunNumber);B、FunNumber operator-();C、FunNumber operator-(int);D、int operator-(FunNumber,FunNumber); 本题考查的是类的成员函数。 选项A是重载了负号或减法运算符,由于减法运算符它具有两个操作数,而题面原型中只有一个,如果重载的是减号运算符,则必为成员函数。 选项B中由于没参数,无论是负号或减法运算符至少具有一个参数,所以它必为成员函数,同时也必定是重载了负号运算符。 选项C是必定以成函数的方式重载,因为C+规定不能对内置类的运算符进行重载,所以它不可能是友元函数(因为操作数为内置的int型),所以必为成员函数重载,且必定是重载了减法运算符。 选项D有两个参数,无论是负号或减法运算符,其操作数不超2个,所以必定为友元函数重载,且重载了减法运算符。故本题答案为D。35、下列是重载乘法运算符的函数原型声明,其中错误的是_。A、MyClass operator * (double,double);B、MyClass operator * (double,MyClass);C、MyClass operator * (MyClass,double);D、MyClass operator * (MyClass,MyClass); 本题考查的是运算符的重载。 重载的运算符应保持其原有的基本语义。重载的运算符应尽可能保持其原有的特性。运算符的重载应当配套。 至少要有一个形式参数是类的类型。所以选项A错。故本题答案为A。36、在两种基本测试方法中,_测试的原则之一是保证所测模块中每一个独立路径至少要执行一次。标准答案为:白盒 或 白箱白盒测试的基本原则是:保证所测模块中每一独立路径至少执行一次;保证所测模块所有判断的每一分支至少执行一次;保证所测模块每一循环都在边界条件下至少执行一次;验证所有内部数据结构的有效性。37、线性表的存储结构主要分为顺序存储结构和链式存储结构。队列是一种特殊的线性表,循环队列是队列的_存储结构。标准答案为:顺序在实际应用中,队列的顺序存储结构一般采用循环队列的形式。38、对下列二叉树进行中序遍历的结果为_。标准答案为:ACBDFEHGP 或 A、C、B、D、F、E、H、G、P 或 A,C,B,D,F,E,H,G,P 或 A,C,B,D,F,E,H,G,P二叉树的中序遍历指在访问根结点、遍历左子树与遍历右子树这三者中,首先遍历左子树,然后访问根结点,最后遍历右子树;并且遍历左、右子树时,仍然先遍历左子树,然后访问根结点,最后遍历右子树。遍历的各种形式牢记39、在E-R图中,矩形表示_。标准答案为:实体集在E-R图中,矩形表示实体集。40、软件需求规格说明书应具有完整性、无歧义性、正确性、可验证性、可修改性等特性,其中最重要的是_。标准答案为:无歧义性无歧义性是指对每一个需求只有一种解释,其陈述具有惟一性。作为设计的基础和验收的依据,软件需求规格说明书应该是精确而无二义的,需求说明书越精确,则以后出现的错误、混淆、反复的可能性越小。41、已知有函数f 的定义如下:int f() static int s = 0; s+=2; return s;则在某程序中第2次执行函数调用语句f();时,函数f的返回值是_。标准答案为:4 本题考查的是static的用法。 static在程序运行的过程中只初始化一次。 第一次运行时,s=2 第二次运行时,s=2+2=4所以答案为4。42、请将下列栈类Stack补充完整。class Stackprivate : int pList100; /int 数组,用于存放栈的元素 int top; /栈顶元素(数组下标)public: Stack():top(0) void Push (const int &item);/ 新元素item 压入栈 int Pop (void); / 新栈顶元素弹出栈 ;void Stack:Push(const int &item) if(top=99) / 如果栈满,程序终止 exit(1); top+; / 栈顶指针增 1 _;int Stack:Pop() if (top 0) / 如果栈空,程序终止 exit(1); return pListtop-;标准答案为:pListtop=item 本题考查堆栈的操作。 由于在本算法中,要弹出栈顶元素,要先将新元素item压入栈,然后取出stacktop中的元素。 如果栈满,if(top=99),程序终止,栈顶指针增1。 如果栈空,程序终止。按照堆栈先进后的原则,向堆栈压入的数据总是在最上面的,top为最大记数,所以pList堆栈的第top数组位置将被赋值成压入数据。所以答案为pListtop=item。43、已知类sample 是一个抽象类,其成员函数 display 是无形参、无返回类型的纯虚函数,请完成其声明:class samplepublic: sample(); _;标准答案为:virtual void display()=0; 本题考查的是纯虚函数。这是一个纯虚函数定义。它的定义格式是:virtual函数返回类型 函数名(参数列表)=0,根据题目的意思,返回类型为空,则用void表示函数名为display参数列表为空,则用()表示结合起来,就是virtual void display()=0;(其中0表示无函数体)。44、已知如下程序的输出结果是23,请将画线缺失的部分补充完整。#includeusing namespace std;class MyClasspublic: void Print() const cout23;int main() MyClass*p =new MyClass();_.Print();return 0;标准答案为:(*p) 本题考查的是指针。MyClass*p =new MyClass();是创建一个类MyClass的指针对象。要执行创建的对象,那么(*p).Print();即为执行此对象的方法。45、有如下程序:#include using namespace std;class A public: A()coutA; A()coutA;class B A a;public: B() cout B; B()coutB;int main() B b; return 0;程序的输出结果是_。标准答案为:ABBA 本题考查的是类的构造。 main()B b;创建类B一个对象b,这时转到类B里去执行类B的构造方法B(),因为在类B里有个全局的类A的对象a,所以在执行构造方法B()之前会先创建类A的对象a,就去执行类A的构造方法A(),输出字符A,再返回到类B执行它的构造方法B()输出字符B,现在所有的构造方法执行完了,就执行析构方法了,因为析构方法与构造方法的执行顺序相反,所以先执行B()方法输出字符B,再执行A()输出字符A。所以输出结果ABBA。46、请将如下程序补充完整,使得输出结果为:bbaa#include using namespace std; class A public

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论