C++封装

1.C++内存分区

1.在了解构造函数之前先弄清楚C++相关的内存分区内容

1.栈区:在定义一个变量或指针时开辟的内存空间,栈区由系统分配和回收,不需要程序员关心
2.堆区:在使用new进行分配的内存,堆区的内存在不使用的时候需要使用delete进行回收,需要程序员自己管理

内存分区.png
2.对象的生命历程
image.png

2.对象结构

定义一个类的代码不开辟内存空间,属于代码区。当对该类进行实例化之后,得到的对象在栈区分配到了相应的内存空间,用于存储各自对象的内容,但是这些对象对应的代码区还是只有一份;


对象结构.png

3.对象的初始化

当得到对象的时候,如果不对对象进行初始化,就不能对对象进行操作。对象的初始化也分情况,具体分为两种情况:


初始化情况.png

4.构造函数

image.png

image.png

注意:1.一个类可以没有默认构造函数,有其他构造函数一样可以进行实例化;

1.初始化列表

初始化列表的使用语法是在构造函数后面对成员变量进行赋值,初始化列表可以对常量进行赋值,语法是
constructor():param1("string s"),param2(int i)
使用括号进行赋值而不是=

image.png
2.拷贝构造函数

拷贝构造函数是一种特殊的构造函数,它在创建对象时,是使用同一类中之前创建的对象来初始化新创建的对象。拷贝构造函数通常用于:

  • 通过使用另一个同类型的对象来初始化新创建的对象。

  • 复制对象把它作为参数传递给函数。

  • 复制对象,并从函数返回这个对象。

如果在类中没有定义拷贝构造函数,编译器会自行定义一个。如果类带有指针变量,并有动态内存分配,则它必须有一个拷贝构造函数。


拷贝构造函数的定义.png

拷贝构造函数的最常见形式如下:

classname (const classname &obj) {
   // 构造函数的主体
}

拷贝构造函数的调用:

A a1 ;
A a2 = a1;
A a3(a1);
image.png
3.构造函数总结
image.png

image.png

注意:拷贝构造函数的参数是确定的,不能重载

5.析构函数

类的析构函数是类的一种特殊的成员函数,它会在每次删除所创建的对象时执行。

析构函数的名称与类的名称是完全相同的,只是在前面加了个波浪号(~)作为前缀,它不会返回任何值,也不能带有任何参数。析构函数有助于在跳出程序(比如关闭文件、释放内存等)前释放资源。


析构函数.png

6.总结

1.类


类.png

数据成员.png

成员函数.png

2.对象


image.png

你可能感兴趣的:(C++封装)