C++封装

作者: 不会敲代码的好代码 | 来源:发表于2018-12-20 15:24 被阅读9次

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++知识点

    C++基本方法: C++ memcpy C++基本特性: C++引用(vs指针) C++指针 C++封装: 将...

  • 慕课网-C++远征之封装篇(下)-学习笔记

    C++远征之封装篇(下) c++封装概述 类 & 对象 对象+数据成员 = 对象成员 对象 + 数组 = 对象数组...

  • cpp1 封装和this指针

    Cpp1 封装和this指针 封装 C语言和C++语言的区别 C++是对C的补充扩展,C原有的语法C++都支持,并...

  • 7-C++远征之封装篇[下]-学习笔记

    C++远征之封装篇(下) c++封装概述 下半篇依然围绕类 & 对象进行展开 将原本学过的简单元素融合成复杂的新知...

  • c++ list, vector, map, set 区别与用法

    c++ list, vector, map, set 区别与用法比较 List封装了链表,Vector封装了数组,...

  • C++的多态

    C++三大特性:封装、继承和多态。其中最好理解的就是封装了,继承作为C++面向对象的特征也不难理解,那么多态,应该...

  • STL标准模板库

    阅读须知: C++语言实现了自定义模板,大家可以自己封装模板. 同样,C++的大牛们已经自己封装了模板库,类似于系...

  • C++ 封装

    Teacher.h Teacher.cpp 初始化Teacher类 构造函数 和 析构函数

  • c++封装

    什么是封装 封装是面向对象编程中的把数据和操作数据的函数绑定在一起的一个概念,这样能避免受到外界的干扰和误用,从而...

  • C++封装

    1.C++内存分区 1.在了解构造函数之前先弄清楚C++相关的内存分区内容 1.栈区:在定义一个变量或指针时开辟的...

网友评论

      本文标题:C++封装

      本文链接:https://www.haomeiwen.com/subject/pidykqtx.html