zoukankan      html  css  js  c++  java
  • C++入门 -- Tips

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

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

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

    2、构造函数初始化列表

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

    3、静态成员变量

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

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

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

    4、静态成员函数

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

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

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

    5、常成员函数

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

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

     6、继承

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

           

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

  • 相关阅读:
    [Re] SpringMVC-5(Converter+拦截器+国际化+异常处理)
    [Re] SpringMVC-4(数据绑定+数据格式化+数据校验)
    [Re] SpringMVC-3(视图解析+RESTful CRUD)
    [Re] SpringMVC-2(数据输出+源码流程)
    常用SQL优化
    JAVA 中的标准注解
    linux第一发
    easyui js取消选中 Tree 指定节点
    axis1.4 服务端获取请求报文报文和客户端获取请求报文和响应报文
    对于两个实体类属性值的合并,java实现
  • 原文地址:https://www.cnblogs.com/y4247464/p/13949114.html
Copyright © 2011-2022 走看看