一、单项选择题(每题2分,共40分)1-5。  BDABC    6—10.  BDAAC
11-15。 CADBB    16—20。  CADDA
B 1 ______不是属于面向对象程序设计的特性
      A。 抽象性        B. 数据相关性              C. 多态性          D. 继承性
D 2。 将对某一类数据的处理算法应用到另一类数据的处理中,要用到C++的______
      A。 类            B. 虚函数                  C. 运算符重载      D。 模板
A 3. C++与C语言最根本的不同之处在于_______
      A。 使用了类      B. 能够实现变量自动初始化  C. 支持软件重用    D. 支持接口重用
B 4. 动态内存分配的主要目的是_______
      A。 使程序按动态联编方式运行                  B。 正确合理的使用内存
C. 提高程序的运行速度                        D. 提高程序的可维护性
C 5. 在C++函数的形参前加const关键字,是为了提高函数的_______
      A。 数据封装性    B。 可理解性                C。 可维护性        D. 可重用性
B 6. 函数重载的目的是________
      A。 实现共享      B. 使用方便,提高可读性    C. 提高速度        D. 减少空间
D 7. 从程序片断:char name[] = ”C++”; course(name);可判断函数course的调用采用的是_______
      A。 传值调用      B. 带缺省参数值的函数调用  C. 引用调用        D。 传址调用
A 8. 用来说明类中公有成员的关键字是________
      A。 public        B. private                C。 protected      D。 friend
A 9。 如果一个类的成员函数print()不修改类的数据成员值,则应将其声明为
      A。 void print() const;                      B。 const void print();
      C。 void const print();                      D。 void print(const);
C 10. 下列关于构造函数的论述中,不正确的是_______
      A。 构造函数的函数名与类名相同                B. 构造函数可以设置默认参数
C. 构造函数的返回类型缺省为int型            D。 构造函数可以重载
C 11。 在程序代码:A::A(int a, int *b) { this-〉x = a; this—〉y = b; }中,this的类型是______
    A. int            B. int *                  C。 A                D。 A *
A 12. 内存泄漏是指_______
    A。 内存中的数据出现丢失                  B。试图释放一个已经释放了的动态分配的堆内存
    C。 函数中局部变量所占的栈内存没有及时回收 D. 动态分配的堆内存在程序退出后始终被占用
D  13。 从程序片断:student zhangsan(”张三","M",22); zhangsan.id("2005131000");可判断id是一个________
      A. 私有成员数据  B. 私有成员函数          C. 公有成员数据    D. 公有成员函数
B 14。 友元函数_______
A。 可以被声明为const                        B。 没有this指针
C。 可以用类名或对象名来调用                  D. 只能用对象名来调用
B 15. 若一个类的成员函数前用static关键字修饰,则该成员函数________
A。 可以被声明为const                        B。 没有this指针
C. 可以访问该类的所有成员                    D。 只能用对象名来调用
C 16。 C++是用_______实现接口重用的
    A。 内联函数      B。 虚函数                C. 重载函数        D. 模板函数
A  17。 公有继承的派生类对象可以访问其基类的________
A。 公有成员      B. 公有成员及受保护成员  C. 受保护成员      D。 私有成员
D 18。 设置虚基类的目的是________
    A。 简化程序      B. 使程序按动态联编方式运行  C. 提高程序运行效率  D. 消除二义性
D 19。 下列关于纯虚函数和抽象类的描述中,不正确的是________
    A。 纯虚函数是一个没有具体实现的虚函数
B. 抽象类是包括纯虚函数的类
    C。 抽象类只能作为基类,其纯虚函数的实现在派生类中给出
D. 可以定义一个抽象类的对象
A  20. 关于运算符重载的不正确的描述是________
    A. 运算符重载函数是友元函数                B。 体现了程序设计的多态性
    C。 增加新的运算符                          D. 使运算符能对对象操作
二、下面的程序是关于CBook类的一个定义,试改正程序中的错误.(共10分
#include 〈iostream.h〉
#include 〈math.h> #inlcude 〈string>
class CBook
{
private:
char *p_book;
public:    p_book=new char[strlen(p_val)+1]
CBook(const char *p_val) { p_book = new char[strlen(p_val)]; strcpy(p_book, p_val); }
void print() const { cout 〈〈 p_book 〈〈 endl; }
~CBook() { delete [] p_book; }
};
void main()
{
char book_title[60];
CBook *p_book_obj;
    cout << Enter book title: "
    cin >〉 p;
CBook abook(p);
    p_book_obj = &abook;
    p_book_obj—〉print();
三、根据如下所示程序,回答下列问题(共10分)
#include <iostream.h>
class 多态性与虚函数CJournal
{
public:
CJournal() { cout 〈< “Journal default constructor” 〈< endl; }
virtual void subscribe() = 0;
void read() { cout 〈< “Read paper” << endl; }
~CJournal() { cout << “Journal default destructor” << endl; }
};
class CComputerDesign : public CJournal
public:
CComputerDesign () {cout <〈 “《Computer Design》default constructor” << endl; }
virtual void subscribe() { cout <〈 “Subscribing 《Computer Design》” <〈 endl; }
void read() {cout 〈< “Reading 《Computer Design》” << endl; }
~CComputerDesign() { cout 〈〈 “《Computer Design》default destructor” 〈〈 endl; }
};
void main()
CComputerDesign  journal1;
CJournal *p_journal;
journal1subscribe();
journal1.read();
// ①
p_journal = &journal1
p_journal-〉subscribe();
p_journal—>read();
1当程序运行到①处时,写出程序运行的输出结果 (3分)
2 当程序结束时,程序会在第1问的基础上增加哪些输出。 (4分)
3. 若在主函数中定义一个对象CJournal journal;程序编译时会否出错?为什么?(3分)
四、编程题40)
1定义一个商品类CGoods,其中包含商品号(long no)、商品名(char *p_name)、商品价格(double price)三个数据成员,以及相应的构造函数、拷贝构造函数、析构函数、打印数据成员的成员函数。(10分)
#include <iostream>
#include <string.h>
using namespace std;
class CCourse
{
private:
        long no;
        char *p_name;
        float credit;
public:
        CCourse(long no_val,char p_val,float credit_val);
        CCourse(const CCourse &r_course);

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