您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > C++程序设计练习题与答案(1)
1C++程序设计练习题一、填空题1.对象的三大基本特性分别为多态性、()、封装性。2.赋值运算符应重载为()函数。3.用()声明的基类称为虚基类。4.用()声明的函数称为虚函数。5.派生类对基类继承控制访问有三种。派生类可以定义其基类中不具备的()。6.静态成员是对象的成员,()函数不是类的成员。7.在函数体之前加()关键字可以防止覆盖函数改变数据成员的值。8.一个const对象只能访问()成员函数。9.使用友元函数是为了提高程序效率,且节约了()开销。10.类名为“ClassName”的类,其拷贝构造函数的原型说明是()。11.由关键字private、public和protected限定成员的访问权限分别是()、()和()。缺省关键字时成员的访问权限为()。12.如果想要公共基类在派生类中只有一个拷贝,就要将公共的基类说明为();如果虚基类没有默认构造函数,就必须在每一个派生类的构造函数中都要调用虚基类的()函数。13.静态成员函数是使用关键字()说明的成员函数。14.一个函数的原型声明为“voidFunName(int=0,double=0,char='x');”,则调用FunName函数的方法共有()种。15.编译时多态性是通过()实现的;运行时多态性是通过()实现的。16.C++通过()实现编译时多态性,通过()实现运行时多态性。17.在C++中,声明类的关键字是()。18.声明C++模板的关键字是()。19.调用函数原型声明为“voidFunName(short,int=0,float=1.0);”的方法有()种。20.处理C++异常的方法:采用()结构。21.用关键字()、()和()限定的成员,其访问权限分别为:公有的、私有的和保护的。缺省关键字时,成员的访问权限为()。22.在C++中,处理()的方法是采用try-catch结构。23.在C++中,用关键字()说明内置函数。24.在C++中,声明友元函数的关键字是()。25.将公共基类说明为()时,多重派生过程中公共基类在派生类中就只有一个拷贝了。26.在C++中,如果函数调用在前、定义在后,就必须先对函数进行()。27.在成员函数头之后、函数体之前加()修饰的成员函数称为类的常成员函数。28.包含纯虚函数的类称为抽象类,这种类只能用作()来派生新类。由于抽象类的特殊性,我们可以说明抽象类的(),但不能说明抽象类的()。29.说明函数类型为“double”、函数名为“virfun”且无参数的纯虚函数的表达形式为()。30.说明静态成员要使用关键字()。31.当函数调用在前定义在后时,必须先对函数进行()说明。32.类名为“ClassN”的类的拷贝构造函数的函数原型说明为()。33.抽象类是包含()的类,必须注意:不能说明抽象类的(),但可说明抽象类的()。34.流插入运算符只能重载为友元函数,重载流插入运算符的函数名为()。35.要防止在该成员函数中改变数据成员的值,就要在类的成员函数名之后、函数体之前加上关键字()。36.类和对象的关系可表述为:类是对象的(),而对象则是类的()。237.在C++中,三种继承方式的说明符号为()、()和(),如果不加说明,则默认的继承方式为()。38.如果只想保留公共基类的一个复制,就必须使用关键字()把这个公共基类声明为虚基类。39.若要把voidmyfun()定义为类A的友元函数,则应在类A的声明中加入语句()。40.类的静态成员分为()和()。41.运算符重载要求保持其原来的操作数个数、()、()和语法结构。42.通过关键字()可以声明模板,通过关键字()指定函数模板的类型参数。43.请列出C++中两种用户自定义的数据类型:()、()。44.构造函数的作用是()。45.后置自增运算符“++”重载为类的成员函数(设类名为ClassName)的形式为()。二、单选题1.继承机制的作用是()A)信息隐藏B)数据封装C)定义新类D)数据抽象2.类的析构函数的作用是()A)一般成员函数B)类的初始化C)对象的初始化D)删除对象创建的所有对象3.类的析构函数是在()调用的。A)类创建时B)创建对象时C)删除对象时D)不自动调用4.在()情况下适宜采用inline定义内联函数。A)函数体含有循环语句B)函数体含有递归语句C)函数代码少、频繁调用D)函数代码多、不常调用5.如果类A被说明成类B的友元,则()A)类A的成员即类B的成员B)类B的成员即类A的成员C)类A的成员函数不得访问类B的成员D)类B不一定是类A的友元6.在类中声明转换函数时不能指定()A)参数B)访问权限C)操作D)标识符7.在公有继承的情况下,基类成员在派生类中的访问权限()A)受限制B)保持不变C)受保护D)不受保护8.在C++类体系中,不能被派生类继承的有()A)转换函数B)构造函数C)虚函数D)静态成员函数9.假定ClassN为一个类,则执行“ClassNx;”语句时将自动调用该类的()A)有参构造函数B)无参构造函数C)拷贝构造函数D)赋值构造函数10.C++语言建立类族是通过()A)类的嵌套B)类的继承C)虚函数D)抽象类11.重载一元运算符--为类A的成员运算符,若有类A的对象obj,则表达式--obj被C++编译器解释为()。A)obj.operator--()B)operator--(obj)C)obj::operator--()D)obj:operator--()12.以下有四种关于类的说法,其中不正确的是()。A)构造函数可以指定参数,但不能指定函数类型B)一个类可以有多个构造函数C)析构函数不可以指定参数,但可以指定函数类型D)一个类只能有一个析构函数13.面向对象程序设计讲求封装性,在C++中封装是借助于()实现的。A)结构B)数组C)类D)函数14.下面有四种关于类的说法,其中不正确的是()。A)一个类可以有多个构造函数B)析构函数不可以指定函数类型,但可以指定函数参数C)一个类只能有一个析构函数D)在一个类中可以说明其它类的对象15.下列有关基类的叙述中不正确的是(),前提为“公有派生”。A)基类的公有成员在派生类中仍然是公有的B)基类的保护成员在派生类中仍然是保护的3C)基类的私有成员在派生类中仍然是私有的D)基类的私有成员在派生类中是不可访问的16.以下有四种关于友元的描述,其中错误的是()。A)类A的友元类B的成员函数都是类A的友元函数B)友元函数可以访问该类的私有数据成员C)类与类之间的友元关系可以继承D)友元可以提高程序的运行效率17.C++的封装性是借助于()实现的。A)函数B)数组C)结构D)类18.要将--重载为类ClassN的后置友元运算符,那么,要在类中添加的原型说明为()。A)friendClassNoperator--(ClassN&,int);B)friendClassNoperator--(ClassN&);C)friendClassNoperator--(int);D)friendClassNoperator--();19.在公有派生时,下列描述中不正确的是()。A)派生类的对象可以赋给基类的对象B)派生类对象的地址可以赋给指向基类的指针C)派生类的对象可以初始化基类的引用D)当基类的指针指向派生类对象时,通过该指针可以直接访问派生类中的成员20.以下关于继承成员的访问属性的叙述中,不正确的是()。A)基类的保护成员在私有派生类中是私有的B)对基类成员的访问必须没有二义性C)基类的保护成员在保护派生类中是保护的D)基类的保护成员在派生类中是保护的三、程序改错题(改正下列类中的错误)1.classClassN{private:intnmember;ClassNpmember;public:ClassN();intClassN(intx);}2.voidmain(){charc[]=newchar[20];deletec;}3.classMyClass{private:intn=1;MyClasspO;public:MyClass(inta=0);void~MyClass(inta);};4.#includeiostreamusingnamespacestd;voidmain(){int&par=newint[6];deletepar;cout主函数End!endl;}5.4#includeiostreamusingnamespacestd;voidmain(){long&par=newlong[9];deletepar;cout主函数End!Endl;}6.CLassCN{private:longn;CNpobj;public:CN();voidCN(intX);};四、分析程序输出题1.#includeiostreamusingnamespacestd;classA{public:A(){coutconstructingAendl;}~A(){coutdestructingAendl;}};classB:publicA{public:B(){coutconstructingBendl;}~B(){coutdestructingBendl;}};classC:publicB{public:C(){coutconstructingCendl;}~C(){coutdestructingCendl;}};voidmain(){Cc1;}2.#includeiostreamusingnamespacestd;voidfun(int&a,int&b){intp;p=a;a=b;b=p;}voidexchange(int&a,int&b,int&c)5{if(ab)fun(a,b);if(ac)fun(a,c);if(bc)fun(b,c);}voidmain(){inta=12,b=89,c=56;exchange(a,b,c);couta=a,b=b,c=cendl;}3.#includeiostream.hclassTC{private:intnum;public:TC();intTEST(){returnnum;}~TC();};TC::TC(){num=0;}TC::~TC(){coutDestructorisactiveendl;}voidmain(){TCtarr[5];coutExitingmainendl;}4.#includeiostream.hclassCBase{private:intn;public:CBase(intm=0){n=m;}virtualvoidprint(){coutInsideCBasenendl;}};classCDrive:publicCBase{private:intn;public:CDrive(){n=0;}CDrive(inta,intb):CBase(a),n(b){}voidprint(){coutInsideCDrivenendl;}};voidmain(){CBaseb1,b2(99),*pb;CDrivedd(11,22);pb=&b1;pb-print();6pb=&b2;pb-print();pb=ⅆpb-print();pb-CBase::print();}5.#includeiostream.hclassCTest{private:longnum;public:CTest();~CTest();};CTest::CTest(){num=0;}CTest::~CTest(){cout调用析构函数endl;}voidmain(){CTestcobj;cout退出主函数endl;}6.#includeiostream.hclassCN{private:intn;public:CN(inti){n=i;}operatorint(){ret
本文标题:C++程序设计练习题与答案(1)
链接地址:https://www.777doc.com/doc-3643454 .html