清华大学计算机系C++期末考试题及答案
【知识点详解】 1. **C++函数参数传递方式**:C++中,函数参数的传递主要有两种方式,即值传递和引用传递(地址传递)。值传递会复制实参的值给形参,而引用传递则不会复制,而是让形参成为实参的一个别名,修改形参就是修改实参。 2. **this指针**:在C++中,每个非静态成员函数都隐含地有一个指向调用该函数的对象的指针,称为`this`指针。它允许成员函数访问当前对象的成员。 3. **作用域分隔符**:当基类和派生类中有同名的数据成员时,如果没有使用作用域分隔符`::`来限定,访问这些成员会出现歧义。 4. **拷贝构造函数**:拷贝构造函数是一种特殊的构造函数,它接受一个同类型的引用作为参数,用于初始化新创建的对象。这个引用通常代表一个已经存在的对象,拷贝构造函数用于实现对象的深拷贝或浅拷贝。 5. **继承时的访问权限**:在公有继承中,基类的公共成员在派生类中仍然是公共的,保护成员变为派生类的保护成员,私有成员对派生类不可见,因此访问权限保持不变。 6. **逻辑运算符**:C++中的逻辑运算符包括`&&`(逻辑与)和`||`(逻辑或)。表达式`A<B||A<C`表示A小于B或A小于C。 7. **无参构造函数**:在使用`new`关键字动态创建对象数组时,如果类没有无参构造函数或者有缺省参数的构造函数,编译器无法进行默认初始化,会导致编译错误。 8. **静态数据成员**:静态数据成员是类的所有对象共享的,只被初始化一次,并且在类外进行初始化。 9. **if...else配对规则**:C++的`else`子句总是与其最近的`if`配对,遵循就近原则。 10. **逻辑运算符优先级**:表达式`(a+b)>c&&b==c`的值取决于`a+b`是否大于`c`以及`b`是否等于`c`,遵循运算符的优先级,先计算`a+b`,再比较大小,最后判断相等性。 11. **面向对象的四大特性**:面向对象编程的四个基本特征是抽象、封装、继承和多态。抽象是建立模型的过程,封装是隐藏实现细节,继承允许派生类继承基类的属性和行为,多态则是同一消息可以被不同的对象响应。 12. **重载函数**:重载函数要求至少在参数数量或参数类型上有所不同。成员函数的覆盖要求派生类函数与基类被覆盖的函数具有相同的名称、参数列表和返回类型。 13. **构造函数与析构函数**:构造函数和析构函数的命名规则不同,构造函数与类名相同,析构函数前有`~`。析构函数无参数,可以是虚函数。 14. **动态联编**:动态联编基于虚函数,要求被调用的成员函数是虚函数,且使用指针或引用调用。 15. **抽象类**:抽象类是不能实例化的类,至少包含一个纯虚函数。它们主要用于被其他类继承,提供接口定义。 16. **const关键字**:`const`关键字可以修饰对象和成员函数,const对象不可被修改,const成员函数不能修改类的数据成员。 17. **用户自定义数据类型**:C++支持用户自定义数据类型,如类(class)和枚举(enum)。 18. **字符串处理**:C++中没有内置的字符串类型,通常使用字符数组(如`char*`或`std::string`)来表示字符串,并以`\0`作为结束符。 19. **I/O库**:C++使用输入输出库(如`iostream`)进行输入输出操作,例如`cout`用于输出。 20. **代码复用方式**:C++中代码复用主要通过继承(如类的继承)和函数(或方法)的复用来实现。 21. **程序运行结果**:程序通过`(b-a)`计算字符间的ASCII码差值,然后将浮点数转换为整数并乘以3.14,结果为3。 22. **程序运行结果**:程序使用`while`循环和`continue`语句,每隔2个数输出一个数,从3开始,输出序列2, 5, 8, 11, 14。 23. **程序运行结果**:程序创建了一个数组,包含两个`test`类的对象。由于没有显式初始化,输出显示默认构造函数的结果。析构函数在数组超出作用域后被调用两次,显示“Desdtructor is active”。 以上是根据题目提供的内容解析的C++语言相关知识点,涵盖了函数参数传递、对象成员、继承、构造函数与析构函数、面向对象特性、字符串处理、输入输出、代码复用等多个方面。
- adrainmao2015-10-05恩 是官方最新版本。挺有用的~
- 粉丝: 1
- 资源: 8
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助