C++入门 -- Tips

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

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

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

2、构造函数初始化列表

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

3、静态成员变量

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

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

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

4、静态成员函数

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

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

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

5、常成员函数

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

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

 6、继承

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

       

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

原文地址:https://www.cnblogs.com/y4247464/p/13949114.html