c面向对象程序设计试题和答案

更新时间:2023-05-14 19:20:56 阅读: 评论:0

一、 填空题(每空1分,共14分)
1、 观看以下程序:
class point{
public:
  void show() {cout<<point<<endl;}
};
void main()
{
point p1;
point *p;
p=&p1;
石开头的四字成语_______________//通过对象p1访问show函数
______________//通过指针p访问show函数
}
2、 C++类中可以包含__________________________________________三种具有不同访问控制权的成员。
3、 定义类时,在类头中将使用关键字_____________来表示类定义的开始。
4、 如果一个类中至少有一个纯虚函数,则该类称为________________
5、 C++类的组成包括数据成员和______________,友元_____(是、不是)该类的成员函数。
6、 友员函数是用关键字____________修饰的非成员函数。
7、 若有:
int i;
int &j=i;
i=10;
j=i+1;
i=__________j=__________
8 new的功能是____________________delete的功能是____________________
二、 选择题(每小题1.5分,共30)
1、下列特性中不是面向对象程序设计语言所特有的是(    )。
A)数据封装    B艾青诗选摘抄)继承(C)多态性    D)模板
2英语三年级、(    )是给变量取一个别名,它引入了变量的同意词。
A)指针    B)引用    C)枚举    D)结构
3、类成员的访问权限中,(    )只能被本类的成员函数和其友元函数访问。
Ashare    Bpublic    Cprivate    Dprotected
4、关于构造函数,下列说法不正确的是(    )。
A)构造函数名字和类名相同
B)构造函数在创建对象时自动执行
C)构造函数无任何函数返回类型
D)构造函数有且只有一个
5、派生类可以访问其基类的(    )。
A)公有成员
B)保护成员
C)私有派生
D)公有和保护成员
6、下列关于运算符重载的描述中,错误的是(    )。
A)运算符重载不可以改变操作数的个数
B)运算符重载不可以改变运算符的功能
C)运算符重载不可以改变结合方向
D)运算符重载不可以改变运算优先级
7C++语言是从早期的C语言逐渐发展演变而来的.C语言相比,它在求解问题方法上进行的最大改进是(     
A)面向过程  (B)面向对象  (C)安全性  (D)复用性
8、对于类中定义的成员,其隐含访问权限为(      )。
    Apublic                    Bprotected
    Cprivate                    Dstatic
9、下面有关重载函数的说法中正确的是(     
A)重载函数必须具有不同的返回值类型;  (B)重载函数形参个数必须不同; 
C)重载函数必须有不同的形参列表      D)重载函数名可以不同;
10、有如下的对类“CSample”的说明,其中(      )是错误的。
  class CSample {    
  Aint a=23;
  B教育实习总结CSample();
    public:
  CCSample(int val);
  D~ CSample();
11int a=3,int *p=&a;中,*p的值是( )
A.变量a的地址值        B.无意义
C.变量p的地址值        D.3
12、每个类(  )构造函数。
A)只能有一个    B)只可有公有的
C)可以有多个    D)只可有缺省的
13、在一个类中可以对一个操作符进行(  )重载。
A1   B2 种以下  C3 种以下  D)多种
14、在公有继承的情况下,基类非私有成员在派生类中的访问权限(   
A 受限制  B)保持不变    C)受保护    D)不受保护
15、应在下列程序划线处填入的正确语句是(     
#include <iostream.h>
class Ba
{public:
void fun(){cout<<"Ba::fun"<<ENDL;}
};
class Derived:public Ba
{  void fun()
{_____________//显示调用基类的函数fun()
cout<<"Derived::fun"<<ENDL;
}
};
Afun();  BBa.fun();  CBa::fun();  DBa->fun();
16、执行下面的程序将输出(   
#include <iostream.h>
class BASE{
    char c;
    public:
        BASE(char n):c(n){}
        virtual ~BASE(){cout<<c;}
        };
class DERIVED:public BASE{
    char c;
  public:
      DERIVED(char n):BASE(n+1),c(n){}
      ~DERIVED(){cout<<c;}
};
int main()
{DERIVED a('X');
return 0;
}
内蒙古哪里好玩AXY     BYX    CX      DY
17、 下面描述中,表达错误的是(     
A)公有继承时基类中的public成员在派生类中仍是public
B)公有继承是基类中的private成员在派生类中仍是private的 
C)公有继承时基类中的protected成员在派生类中仍是protected的  疾风暴雨
D)私有继承时基类中的public成员在派生类中是private
18定义析构函数时,应该注意(     
A)其名与类名完全相同      B)返回类型是 void 类型
C)无形参,也不可重载      D)函数体中必须有 delete 语句
19对于在类中定义的静态数据成员,下面正确的说法是(   
A.该类的每个对象中都有一个静态数据成员
B.对象创建时产生     
留念的近义词C.在类外进行初始化
推荐书D.既可以在类外初始化,也可以在类内初始化
20C++中声明常量的关键字是(  )。
A.  const      B.  extern        C.  public      D.  enum
三、 改错题(每处2分,共6)
1、 使用VC6打开考生文件夹下的工程proj1,此工程包含一个源程序文件main.cpp,但该程序运行有问题,请改正main函数中的错误,使程序的输出结果为:
member=0
member=5
menber=10
源程序文件main.cpp清单如下:
#include <iostream.h>
class MyClass
{
public:
  MyClass(int i){member=i;}
  void SetMember(int m){member=m;}
  int GetMember()const{return menber;}
  void print()cont{cout<<"member="<<MEMBER<<ENDL;}
private:
  int member;
};
voed main()
{
  MyClass obj1;  //更正_____________________________
  obj1.print();
  MyClass obj2(3);
  ber=5;  //更正__________________________
  MyClass.SetMember(10);  //更正_______________________

本文发布于:2023-05-14 19:20:56,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/89/897881.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:函数   成员   重载   程序   改变
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图