【C++语言基础知识点】
1. 类和对象:类是C++中的面向对象编程概念,它是一种抽象的数据类型,用于定义具有相似属性和行为的对象。类可以看作是蓝图,而对象是根据类创建的实例。类和对象的关系是抽象和具体的关系,类是对象的模板,对象是类的具体体现。C++中的类不同于C语言中的结构体,虽然它们都可以用来组合数据,但类支持方法(成员函数)和封装等特性。
2. 关键字:C++的关键字包括public、private、protected、class、struct、int、string、static等,用于定义类的访问权限、数据类型等。在提供的选项中,B选项(shod、string、static)中的'shod'不是C++关键字。
3. 数据封装:数据封装是面向对象编程的重要特征之一,它解决了不同模块间数据的非法访问问题。通过封装,可以隐藏对象的内部实现细节,只暴露必要的接口供外部使用,从而增强代码的安全性和可维护性。
4. 构造函数与析构函数:构造函数在对象创建时自动调用,用于初始化对象的成员变量,可以重载以支持不同参数列表的构造。析构函数在对象生命周期结束时自动调用,用于清理对象占用的资源,析构函数不能重载。
5. 对象初始化:在给出的程序中,错误的行是第5行(`int n=2:`),在C++中,应该使用初始化器列表(`int n = 2;`)来初始化类的成员。
6. 构造函数调用:在程序中,构造函数A(int i)被用来初始化对象a,接着b(a)调用了拷贝构造函数,所以输出是12,因为b是a的副本,打印的num值相同。
7. 静态数据成员:静态数据成员是类的所有对象共享的,而不是每个对象都有自己独立的副本。因此,A选项是正确的描述。
8. 友元:友元机制允许一个类访问另一个类的私有或保护成员,但友元关系不是双向的。A成为B的友元,并不意味着B也是A的友元。
9. 基类与派生类访问:公有继承下,基类的公有成员和保护成员在派生类中仍然是公有或保护的,可以被派生类的对象访问。私有继承下的基类成员在派生类中是私有的,不能直接通过派生类对象访问。
10. 构造函数调用顺序:在创建派生类对象时,首先调用基类的构造函数(a),接着是成员对象的构造函数(b),最后是派生类自身的构造函数(c)。所以正确顺序是acb。
11. 虚函数:虚函数是在基类中声明的,用于实现多态性。派生类可以覆盖基类的虚函数,但不是必须的。虚函数不能是静态成员函数,因为静态成员函数与特定对象无关。纯虚函数在基类中声明,要求派生类必须实现它。
12. 模板:函数模板和类模板可以接受任意类型的数据作为参数。类模板需要实例化为具体的模板类才能使用,类模板的成员函数默认不是模板函数。函数模板也需要实例化为模板函数后才能调用。
13. 文件操作:`ofstream f("SALARY.DAT", ios::app | ios::binary);`这条语句会打开名为"SALARY.DAT"的文件,并将其设置为追加模式(app),如果文件存在,写指针位于文件尾;如果文件不存在,将创建新文件。
这些知识点涵盖了C++的基础语法、面向对象特性、文件操作以及模板和构造函数等多个方面,是C++学习中的核心内容。