1 面向对象概述

单元测试——从C程序到C++代码

1、单选题:
关于C++和C语言的描述中,下面哪种说法是正确的( )。​
选项:
A:  C++是C的一个子集
B: C程序在C++环境中可以运行
C: C++程序在C环境中可以运行
D: C++与C语言相互不兼容
答案: 【 C程序在C++环境中可以运行

2、单选题:
‎关于引用,下列的说法中错误的是() 。‍
选项:
A: 引用变量是给被引用的变量取一个别名
B: 引用主要是用来作函数的形参和函数的返回值
C: 在声明引用变量时,要给它另开辟内存单元
D: 在声明引用时,必须同时对它进行初始化
答案: 【 在声明引用变量时,要给它另开辟内存单元

3、单选题:
以下哪组函数能正确重载,函数调用不会产生二义性()。‎‎‎
选项:
A: swap( int*, int*);      void swap(int*, int*);
B:  void fun(char);     void fun(char, char=’’);
C:  int fun(int* p, int n);    float fun(int a[], int&m); 
D:  void fun(char*, int, double);     void fun(char[], int);
答案: 【  void fun(char*, int, double);     void fun(char[], int);

4、单选题:
‎采用重载函数的目的是()。‎
选项:
A:  实现代码的共享
B:  减少存储的空间
C: 提高执行的速度
D: 共享函数名,提高可读性
答案: 【 共享函数名,提高可读性

5、单选题:
调用下列哪个函数,能交换两个指针的指向()。‌‌ char str[]="China";‌ char *p1 = str, *p2 = “加油”;‌       Swap (p1, p2);‌       cout<< p1 << p2; // 加油China‌‌
选项:
A: void Swap(char *p, char *q){          char *t = 0;         t=p; p=q; q=t;}
B: void Swap(char* p, char *q){          char t;         t=*p;*p=*q;*q=t;}
C: void Swap(char * *p, char * *q){          char* t = 0;         t=*p;*p=*q;*q=t;}
D: void Swap(char* &p, char * &q){          char* t = 0;          t=p; p=q; q=t;}
答案: 【 void Swap(char* &p, char * &q){          char* t = 0;          t=p; p=q; q=t;}

2 类与对象

类与对象单元测试1

1、单选题:
‎下列有关类的说法不正确的是() ‍
选项:
A: 类是一种用户自定义的数据类型,包括数据成员和成员函数
B: 在类中private、protected和public可以按任意顺序、任意出现多次
C: 在类中如果不作特别说明,所有的数据均为私有类型
D: 在类中如果不作特别说明, 成员函数均为公有类型
答案: 【 在类中如果不作特别说明, 成员函数均为公有类型

2、单选题:
‍在类定义的外部,可以被访问的成员是 ​
选项:
A: 所有类成员
B: private或protected的类成员
C: public的类成员
D: public或private的类成员
答案: 【 public的类成员

3、单选题:
‌以下叙述中不正确的是‎
选项:
A: 一个类中可以有多个同名的成员函数
B: 在一个类中可以声明另一个类的对象作为它的数据成员
C: 类定义的最后要以分号结束
D: 系统为类分配的存储空间可通过sizeof计算
答案: 【 系统为类分配的存储空间可通过sizeof计算

4、单选题:
‌以下叙述中正确的是? ‎
选项:
A: 为了方便,推荐将类成员函数全部在类内实现
B: 类成员函数在类外实现时,语法和普通函数相同
C: 普通函数和类成员函数均可以设置默认参数
D: 普通函数可以重载,而类成员函数不可以重载
答案: 【 普通函数和类成员函数均可以设置默认参数

5、单选题:
‍假设有类class A{int a;public:A* next;A(int=0);void set(int a);};以下语句正确的为( )。 ‌
选项:
A: A a;a.a = 3;a.next = &a;
B: A *p = new A(2);p->set (3);delete p;
C: A* ptr = new A[2];delete ptr;
D: A a;a.next = new A(1);delete a;
答案: 【 A *p = new A(2);p->set (3);delete p;

6、单选题:
​以下正确的是 ‌
选项:
A: 一个类只能定义一个构造函数
B: 一个类只能定义一个析构函数
C: 构造函数返回值类型为void
D: 一个类一定有无参构造函数
答案: 【 一个类只能定义一个析构函数

7、单选题:
‎已知类A中一个成员函数说明为:void set(A &a); ,其中A &a的含意是 ‍
选项:
A: 指向类A的指针为a;
B: 将a的地址值赋值给变量set;
C: a是类A的对象引用,用来作函数set( )的形参;
D: 变量A与a按位相与作为函数set( )的参数;
答案: 【 a是类A的对象引用,用来作函数set( )的形参;

8、单选题:
‍假定AB为一个类,则执行“AB a, b(2), c[3], *p=&a;”语句时共调用该类默认构造函数的次数为 ‍
选项:
A: 5
B: 6
C: 3
D: 4
答案: 【

剩余75%内容付费后可查看

发表评论

电子邮件地址不会被公开。 必填项已用*标注