先说一下内存分区

内存分为栈区、堆区、全局区、常量区、代码区

栈区:int x=0;int *p=NULL;//平常定义变量存储的区,内存由系统来进行分配回收

堆区:int *p=new int[20];//使用new申请内存的未来用delete进行释放

全局区:存储全局变量及静态变量

常量区:string str ="hello";

代码区:存储编译之后逻辑代码的二进制

若我们定义一个类,在实例化之前没有占用内存,实例化之后对象存在栈区,所有的实例化的对象使用一个逻辑代码。

如果实例化对象,所有的数据是不可控的,所以我们要对对象进行初始化!

为了避免忘记或者重复调用初始化函数,C++提供了一种新的解决方案——构造函数!

1.构造函数能在对象实例化时被自动调用且只调用一次。

2.构造函数与类同名,没有返回值。

3.可以有多个重载形式。

4.实例化对象时仅用到一个构造函数。

5.构造函数分为有参无参

下面给出一个构造函数

C++对象结构

构造函数还有另一种写法,也就是初始化列表

student():m_strName("jim"),m_iAge(10){}

多个变量的时候中间用逗号隔开,写在括号里

1.初始化列表在构造函数之前被执行

2.初始化列表只能用于构造函数

3.初始化列表可以同时初始化多个数据成员

在声明的时候写

teacher(string name=“jim”,int age=20)//已加默认值,定义时不用写了

在cpp文件里写

teacher:teacher(string name,int age):m_strName(name),m_iAge(age)//声明已经写了默认值,name就是jim,age就是20

{

}

相关文章:

  • 2021-12-30
  • 2021-07-30
  • 2023-03-27
  • 2021-08-30
猜你喜欢
  • 2021-08-31
  • 2021-04-07
  • 2022-12-23
  • 2021-05-26
  • 2021-04-23
  • 2021-04-18
相关资源
相似解决方案