造函数先执行C.A 类构造函数与成员构造函数同时执行 D.A 类构造函数与成员构造函数执行顺序不确定
C++是一种强大的面向对象编程语言,它继承了C语言的大部分特性并扩展了对面向对象编程的支持。在C++中,有几个关键概念和知识点需要理解和掌握:
1. **兼容性**:C++是兼容C的,这意味着几乎所有的C代码都可以在C++环境中编译和运行。但是,C++引入了一些新的特性,如类、对象、模板等,这些在C中是不存在的。
2. **输入输出流**:C++使用iostream库中的对象进行输入输出操作。`cout`是用于屏幕输出的标准流对象,而`cerr`用于标准错误输出,`cin`则用于标准输入。
3. **动态内存管理**:使用`new`关键字动态分配内存,对应的释放操作是`delete`。`free`是C语言中释放内存的函数,不适用于C++。
4. **访问控制**:在C++中,类的数据成员如果没有明确指定访问修饰符,默认是私有(private)的。
5. **参数传递**:值传递意味着形参是实参的一个副本,它们之间是独立的。形参的改变不会影响实参。
6. **默认参数**:在函数调用时,如果某个参数有默认值,那么从该参数开始的所有后续参数都可以省略,但前面的参数必须给出值。
7. **函数调用**:C++允许嵌套调用函数,但不支持三元运算符形式的多参数调用,例如`int m = max(22,59,70);`是不合法的。
8. **虚函数(多态)**:适合声明为虚函数的通常是那些执行时间较短、功能简单的函数,以实现多态性。对于执行时间较长的函数,使用虚函数可能会增加开销。
9. **函数重载**:重载是指在同一个作用域内可以有多个同名但参数列表不同的函数。不能仅通过返回类型来区分重载函数,必须是形参的数量或类型不同。
10. **类的成员变量**:类的成员变量属于该类,每个对象有自己的副本。在某些特定情况下(如静态成员),它们可以被所有实例共享。
11. **访问控制**:私有成员只能在类的内部访问,不能通过类的对象或子类对象直接访问。
12. **构造函数**:如果没有定义构造函数,编译器会自动生成一个默认的无参数构造函数。
13. **析构函数**:每个类只有一个析构函数,用于在对象生命周期结束时释放资源。
14. **this指针**:`this`指针在每个非静态成员函数中隐含地存在,指向调用该成员函数的对象,使得对象的成员可以被访问。
15. **访问权限**:类的成员函数可以访问类的所有成员,包括私有和保护成员。类的对象只能访问公有成员,普通函数不能直接访问类的成员,除非通过对象或友元函数。
16. **宏定义**:在预处理指令中,`#define`用于定义宏。
17. **构造函数的执行顺序**:当一个类包含其他类的对象作为成员时,在创建主类对象时,成员对象的构造函数会先执行,然后是主类的构造函数。
以上是C++编程中的一些基本知识点,涵盖了类、对象、内存管理、输入输出、函数重载、访问控制等多个方面。在准备C++期末考试时,理解并掌握这些知识点是非常重要的。