cpp-基础扫盲

  • 从管理数据的角度理解cpp

  • 定义位于类声明中的函数都将自动成为内联函数

    • 定义在类声明外部的,也可使用inline限定符使其成为内联的;类内声明无需加上inline限定符
  • 类中的函数不占用类/对象的内存空间,即使用sizeof()结果不受类中成员函数的影响,仅与数据部分相关

    • 想想:确实应该是这样的
    • 但是含有虚函数的话,可能含有额外的虚函数表指针
  • 类中的静态成员变量也不占用类实例对象的内存空间

  • 即然对象占据的内存空间中没有成员函数的信息,对象是怎么访问到其成员函数呢?

    • 因此可以看到,普通成员函数的访问与运行时的对象没有任何关系
    • 普通成员函数的绑定 - 完全依赖于编译器的解析与静态绑定
    • 编译时完全确定了
  • 对比虚函数:

    • 对象内部有虚函数表指针,因此可以访问到真实的对象对应的虚函数地址,因此可以实际调用到对象对应的虚函数
  • 当程序创建未显示初始化的对象时,总是调用默认构造函数

    • 这里就记住了:
      • 声明:变量/对象,必须加上extern关键字
  • 在类中以下面的方式声明的枚举的作用域为整个类

    1
    2
    3
    4
    5
    6
    class Bakery
    {
    private:
    enum {Month = 12};
    ......
    }
    • 这里并没有给出枚举的变量名,因此类中并没有这个成员变量的声明;创建的类实例对象中也没有这个这个枚举成员;Month只是一个符号,在作用域为整个类的代码中遇到它时,编译器将用12替换它
  • extern int test_arr[]

    • test_arr是不完整类型,不能对其使用sizeof()操作

cpp-基础扫盲
http://example.com/2024/08/21/CPP/cpp - 基础扫盲/
作者
Cyokeo
发布于
2024年8月21日
许可协议