第一章 题目
一、填空题
1、C++是一种 的语言。
2、C++作为一门面向对象语言,它的三大特性分别是 、 、 。
3、C++有 、 、 、 、 等优点,但C++语言本身过度复杂,并且C++编译器受到C++复杂性的影响,非常难于编写,即使能够使用的编译器也存在大量问题,而且这些问题大多难于发现。
4、观察程序,在下面括号内填入“相等” 或 “不相等”。
#include <iostream>
using namespace std;
int main(void)
{
int a ,b;
cin>> a >> b;
bool c = (a == b);
if(c)
cout<<"a 与 b ( )"<< endl;
else
cout<<"a 与 b ( )" << endl;
return 0;
}
二、选择题
5、下列关于iostream的描述中,错误的是( )。
A、它是标准的C++头文件
B、它与iostream.h是两个不同文件
C、C++标准不再支持iostream.件
D、iostream与iostream.件形式不同,但其内容实现是一样的
6、下列关于C++中的类型转换的说法中,错误的是( )。
A、static_cast<>可用于基本数据类型之间的转换
B、const_cast<>在进行类型转换时用来修改类型的const或volatile属性
C、dynamic_cast<>主要用于类层次间的上行和下行转换,以及类之间的交叉转换
D、reinterpret_cast<>在进行类型转换时可以对数据类型进行检查,以确保转换的安全性
7、下列关于string的描述中,正确的是( )
A、string是C++中的基本数据类型
B、string包含在头文件iostream中
C、用C++ string类来定义字符串,不必担心字符串长度、内存不足等情况
D、C++中无法用字符数组来处理字符串
8、下列关于引用的说法中,错误的是( )
A、引用在定义时必须初始化
B、引用就是指针
C、引用在初始化时只能绑定左值,不能绑定常量值
D、引用一旦初始化,其值就不能再更改
三、判断题
9、语句using namespace std;是对标准命名空间的引用。
10、如果定义string s(5, ‘a’); 则s.length()和s.size()的值是相等的。
11、引用实际上是隐式的指针,和指针是同一种数据类型。
12、一个函数一旦定义成了内联函数,则在调用时就会将函数代码插入到调用处。
四、简答题
13、请简述一下引用与指针的区别。
14、请简述一下new与malloc在分配内存时的区别。
15、定义一组重载函数,实现int、float、char类型数据的相加。
第一章 答案
1、面向对象
2、封装 继承 多态。
3、保持与C兼容 支持面向对象的机制 可重用性、可扩充性、可靠性和可维护性 代码性能高 多种设计风格
4、相等 不相等
5、D
6、D
7、C
8、B
9、对
10、对
11、错
12、错
13、引用是隐式的指针,但使用引用与使用指针却有着本质的区别:
(1)使用引用类型就不必在swap()函数中声明形参是指针变量。指针变量要另外开辟内存单元,其内容是地址。而引用变量不是一个独立的变量,不单独占内存单元。
(2)在main()函数中调用swap()函数时,实参不必用变量的地址(在变量名的前面加&),而直接用变量名。系统向形参传送的是实参的地址而不是实参的值。
14、
(1) new创建对象时返回的是直接带类型信息的指针,而malloc()返回的都是void*类型的指针.
(2)两者在创建对象时都可能造成内存泄露,但new可以定位到哪个文件的哪一行,而malloc()没有这些信息。
(3)对于非内置类型对象而言,new/delete在创建对象时不止是分配内存,还会自动执行构造函数进行初始化,对象消亡之前自动执行析构函数,而malloc()/free()只能简单的分配释放内存。
(4)new与malloc()申请内存位置不同,new从自由存储区(free store)分配,而malloc()从堆区(heap)分配。(这一点依据编绎器不同而不同)。
15、
#include <iostream>
using namespace std;
void add(int x, int y)
{
cout << x + y << endl;
}
void add(char ch1, char ch2)
{
cout << ch1 + ch2 << endl;
}
void add(double f1, double f2)
{
cout << f1 + f2 << endl;
}
int main()
指向类成员函数的指针{
add(1, 2);
add('a', 'b');
add(1.2, 2.3);
system("pause");
return 0;
}
第二章 题目
一、填空题
1、类的默认访问权限是 。
2、C++作为类的每个成员函数都有一个隐含定义的指针,称为 指针,它的类型是成员函数所属类的类型。
3、若类A中包含成员对象x,则创建A类对象时,先执行 的构造函数,再执行 的构造函数。
4、已知如下程序的输出结果是23,请将画线处缺失的部分补充完整。
#include <iostream>
using namespace std;
class MyClass{
public:
void Print() const { cout << 23;}
};
int main()
{
MyClass *p = new MyClass();
Print();
return 0;
}
二、选择题
5、下列关于结构化程序设计方法的说法中,错误的是( )。
A、在数据处理过程中,采用的是自顶向下、分而治之的方法
B、将整个程序按功能划分为几个可独立编程的子模块
C、以“对象”和“数据”为中心
D、数据和处理数据的过程代码是分离的、相互独立的实体
6、有如下程序:
#include <iostream>
using namespace std;
class MyClass{
public:
MyClass(){ cout << 'A'; }
MyClass(char c){ cout << c; }
~MyClass(){ cout << 'B'; }
};
int main()
{
MyClass p1, *p2;
p2 = new MyClass('X');
delete p2;
system("pause");
return 0;
}
执行这个程序,屏幕上将显示输出()。
A、 ABX
B、 ABXB
C、 AXB
D、 AXBB
7、下列情况下,不会调用拷贝构造函数的是()。
A、 用一个对象去初始化同一类的另一个对象时
B、 将类的一个对象赋予该类的另一个对象时
C、 函数的形参是类的对象,调用函数进行形参和实参结合时
D、 函数的返回值是类的对象,函数执行返回调用时
8、下列关于静态成员的描述中,错误的是( )
A、静态成员不属于对象,是类的共享成员
B、静态数据成员要在类外定义和初始化
C、调用静态成员函数时要通过类或对象激活,所以静态成员函数拥有this指针
D、非静态成员函数也可以操作静态数据成员
三、判断题
9、定义对象引用时,可以对其引用进行初始化,也可以不进行初始化。
10、创建对象时会为每个对象的数据成员和成员函数都分配空间。
11、使用class定义的类,其默认的访问权限是公有的,使用struct定义的类,其默认的访问权限是私有的。
12、如果一个类拥有资源,比如开辟空间,当这个类的对象发生复制的时候,资源重新分配,需要进行深拷贝,反之,没有重新分配资源,只进行浅拷贝。
四、简答题
13、请简述一下构造函数的定义语法。
14、请简述一下友元的概念以及友元的副作用。
15、设计一个Bank类,实现银行某账号的资金往来账目管理,包括建账号、存入、取出等。
要求:
1) Bank类包括私有数据成员top(当前账指针),date(日期),money(金额),rest(余额)和sum(累计余额)。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论