【知识点详解】
1. 数据类型转换:在C++中,表达式`10 + i + j`的结果数据类型取决于操作数的数据类型。由于`i`是`int`型,`j`是`double`型,根据类型提升规则,`10`会被提升为`double`,所以整个表达式的结果是`double`类型。
2. 指针的声明与使用:`const`关键字用于声明常量。要禁止修改指针本身以及它所指向的数据,应该使用`const`两次,即`const char * const p="ABCD";`这样定义的指针既不能改变其指向的地址,也不能修改所指向的字符。
3. 构造函数的调用时机:类的构造函数在创建对象时自动调用,用于初始化对象的成员。
4. 友元关系:类A是类B的友元,意味着类A可以访问类B的私有和保护成员,反之不一定成立。如果类B也是类A的友元,那么它们互相可以访问对方的私有和保护成员。
5. 友元关系的传递性:友元关系不具有传递性,类C的成员函数不能直接访问类B的私有或保护成员,除非类B明确声明了类C是其友元。
6. 构造函数的特性:构造函数的函数名与类名相同,可以有默认参数,可以重载,但构造函数不需要指定类型说明。
7. `this`指针的使用:`this`指针在每个非静态成员函数中隐含存在,它指向调用该函数的对象,确保每个对象拥有自己的数据成员。
8. 多态性的概念:多态性允许不同的对象调用相同名称的函数(成员函数),并且根据对象的实际类型执行不同的操作。
9. 文件操作:`ofstream f("filename", ios::app | ios::binary)`尝试打开文件"filename",如果文件存在,写指针定位到文件尾,如果文件不存在,创建新文件。
10. 继承的特性:在公有继承下,基类的公有和保护成员在派生类中的访问权限保持不变。
11. 构造函数的参数传递:在类的构造函数中,如果参数与成员变量同名,可以直接通过成员名来初始化,如`a=aa--`。
12. C++的发展:C++从面向过程转向面向对象,主要是引入了类和对象的概念,增强了封装、继承和多态等特性。
13. 成员访问权限:在私有继承下,基类的公有和保护成员在派生类中变为私有,访问权限受到限制。
14. 访问修饰符:在类中,成员可以使用`public`关键字声明为公共成员,使得在类内外都可以访问。
15. 函数作用域:在函数内部定义的变量,包括形式参数,属于局部变量,只在该函数的作用域内有效。
16. 继承的特性:在私有继承下,基类的公有和保护成员在派生类中的访问权限变为私有,不能被派生类的公共部分访问。
17. 实参与形参的关系:在函数调用中,实参和形参不是同一对象,但它们之间有对应关系,形参接收实参的值或引用。
18. 继承的特性:C++的继承性允许派生类继承基类的特性,并且可以增加新的特性或重定义基类的特性。
19. 指针数组的声明:`int *pa[5];`声明了一个包含5个元素的指针数组,每个元素都是一个`int`型指针。
20. 纯虚函数的声明:在基类中,使用`virtual void tt()=0;`声明纯虚函数,表明该基类是一个抽象类,不能直接实例化。
填空题部分未提供具体问题,无法给出答案。但通常这类问题会涉及C++的基本概念、语法和编程技巧,如数据类型、运算符、控制结构、函数、类、对象、继承、多态等知识点。