C++重难点整理

C++重难点整理

-----有问题请及时联系笔者修改鸭~

第一章

  1. 在C++中,通过重载虚函数来实现多态性。
  2. C++是一种面向对象和面向过程相结合的语言。

第二章

  1. 内联函数的定义需要在函数的返回值类型前面加关键字inline
  2. 在堆中通过new运算符创建的对象,其生存期为动态生存期
  3. 在函数代码少、频繁调用的情况下适宜采用inline定义内联函数

第三章

  1. 类中数据成员的生存期由对象决定。

  2. 构造函数可以重载,析构函数不能重载。

  3. 拷贝构造函数的调用:

    • 用一个对象去初始化同类的另一个对象。
    • 函数的形参是类的对象,调用函数进行形参和实参相结合。
    • 函数的返回值是类的对象,函数执行返回调用时。
  4. 假设Cls是类,类的拷贝构造函数声明语句:

    Cls(Cls &p);

  5. 类有几个对象,就调用几次构造函数,几次析构函数(多用于数组有n个成员,调用n次时)。

  6. 不能在类定义时对类中的数据成员进行初始化【这个应该指的是静态数据成员叭…】

第四章

  1. 友元的作用是提高程序的运行效率

  2. 静态数据成员在对象调用析构函数后,不会从内存中撤销。

  3. 类A是类B的友元,类B不一定是类A的友元。

  4. 友元函数的实现不一定要在类的内部定义;

    友元函数不是类的成员函数;

    友元函数可以访问类的私有成员;

    友元函数破坏了类的封装性和隐藏性。

  5. 常量数据成员必须被初始化,并且不能更新。

  6. 不管是类的成员函数,还是常量成员函数,都可以操作常量对象。

  7. 常量对象只能调用类的常量成员函数。

  8. 类A是类B的友元,类B是类C的友元,类A的成员函数可以访问类B的任何成员,类B的成员函数可以访问类C的任何成员。

  9. 类的静态成员函数不能访问类的非静态成员。

  10. 非静态数据成员不能在类外初始化。

第五章

  1. 派生类的对象只能访问基类成员中的公有继承的公有成员,公有继承的保护成员不行。【???不对劲】

  2. 内嵌对象???

  3. 多重继承的二义性:

    • 一个派生类的两个基类中都有某个同名成员,在派生类中对这个成员的访问可能出现二义性。
    • 解决二义性最常用的方法是对成员名的限定。
    • 基类和派生类中出现同名函数,不存在二义性(同名覆盖)。
  4. 公有继承的基类中的private成员在基类中仍是private的。

  5. C++中虚函数能被派生类继承。

  6. 解决二义性问题的方法有:使用作用域分辨操作符虚基类(差不多就是虚继承)。

  7. 不能将派生类的对象赋给指向基类的指针。

第六章

  1. 在重载一个运算符时,其参数表中没有任何参数,这表明该运算符时作为成员函数重载的单目运算符

  2. 三目运算符不可以重载。

  3. 虚函数要在函数说明时定义。【???】

    必须在声明里面定义,至于实现在声明以及实现文件都可以,虚函数是必须在类里面定义的,只有类才有虚函数。

  4. 派生类的虚函数与基类中对应的虚函数具有相同的参数个数和类型。

  5. 运行时的多态——虚函数【应该是纯虚函数吧】。

  6. 抽象类的特性——不能定义其对象。

  7. 动态关联是运行时确定操作函数的。

    Person *p = &s;

    Person &p = s;

    p = s;

  8. 动态关联调用虚函数操作是通过指向对象的指针或对象引用的。

  9. 虚函数在类外定义,不需要加virtual关键字【???究竟是类内还是类外?】。

MOOC知识点总结

  1. 重用类代码——使用已有类来定义新类(组合/继承)。

  2. 初始化对象——构造函数;

    销毁对象清理内存——析构函数。

  3. 头文件引用工程内部——#include "xxx.h"

  4. 组合类对象中的对象成员还包含自己的下级成员,可以访问;多级访问语法:组合类对象名.对象成员名.对象成员的下级成员名

    • 多级访问将受到多级权限的控制。
  5. 组合类对象中数据成员的析构顺序是:先执行组合类析构函数的函数体,清理非对象成员;再调用对象成员所属类的析构函数,清理对象成员。

    • 即对象的析构顺序与构造顺序相反。
  6. 数据成员中包含对象成员的类称为组合类

猜你喜欢

转载自blog.csdn.net/weixin_52777510/article/details/121941802