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++封装

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