• C++入门 -- Tips


    1、C++对象的内存模型:

    编译器会将成员变量和成员函数分开存储:分别为每个对象的成员变量分配内存,但是所有对象都共享同一段函数代码,如下图:

     成员变量在堆区或栈区分配内存,成员函数在代码区分配内存

    2、构造函数初始化列表

    初始化 const 成员变量的唯一方法就是使用初始化列表。

    3、静态成员变量

    static 成员变量属于类,不属于某个具体的对象,即使创建多个对象,也只为其分配一份内存,所有对象使用的都是这份内存中的数据。

    static 成员变量必须在类声明的外部初始化,在初始化时分配内存。

    静态成员变量在初始化时不能再加 static,但必须要有数据类型。被 private、protected、public 修饰的静态成员变量都可以用这种方式初始化。

    4、静态成员函数

    普通成员函数可以访问所有成员(包括成员变量和成员函数),静态成员函数只能访问静态成员。

    普通成员函数只能在创建对象后通过对象来调用,因为它需要当前对象的地址作为隐式的形参。而静态成员函数可以通过类来直接调用,编译器不会为它增加形参 this,它不需要当前对象的地址,所以不管有没有创建对象,都可以调用静态成员函数。

    和静态成员变量类似,静态成员函数在声明时要加 static,在定义时不能加 static。

    5、常成员函数

    常成员函数需要在声明和定义的时候在函数头部的结尾加上 const 关键字。

    常量表达式的值虽然在内存中,但是没有办法寻址,所以也不能使用&来获取它的地址,更不能用指针指向它

     6、继承

    当存在继承关系时,派生类的作用域嵌套在基类的作用域内。

           

     有继承关系时,派生类的内存模型可以看作是基类成员变量和新增成员变量的总和,而所有成员函数仍然在代码区,由所以对象共享。

  • 相关阅读:
    MYSQL: MYSQLBINLOG命令查看日志文件
    JAVA MAIL 发送邮件(SSL加密方式,TSL加密方式)
    Spring和Email整合详解
    java 版百度网盘功能
    Spring @Conditional注解 详细讲解及示例
    spring注解之@Import注解的三种使用方式(转载)
    Redis protected-mode属性解读
    5
    4
    3
  • 原文地址:https://www.cnblogs.com/y4247464/p/13949114.html
Copyright © 2020-2023  润新知