加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

C++构造函数与析构函数

发布时间:2020-12-16 10:49:06 所属栏目:百科 来源:网络整理
导读:普通构造函数 当你在自定义类中没有编写构造函数时,编译器会帮你自动生成一个构造函数,并且这个构造函数不会做任何事情,可以认为是一个空函数。构造函数不会有返回值,但是可以有不同 类型 和 个数 的传入 参数,其实就是重载构造函数。 ? 浅拷贝构造函数

普通构造函数

当你在自定义类中没有编写构造函数时,编译器会帮你自动生成一个构造函数,并且这个构造函数不会做任何事情,可以认为是一个空函数。构造函数不会有返回值,但是可以有不同类型个数的传入参数,其实就是重载构造函数。

?

浅拷贝构造函数

当你没有定义浅拷贝构造函数时,编译器也会帮你生成一个浅拷贝构造函数。什么是浅拷贝?当你类成员不涉及系统资源,那么就可以使用浅拷贝。浅

?

class Child
{
public:
        int a;
        int b;

        Child(const Child& c)
        {
                a  = c.a;
                b  = c.b;
        }
};

?

代码中,这个类没有使用到系统资源,因此可以直接的赋值。

?

深拷贝构造函数

当使用到了系统资源的时候应该要使用深拷贝构造函数。什么是深拷贝?如果类成员有一个指针,这时采用浅拷贝,那么就把指针地址拷贝到另一个对象的成员中,这时候两个对象拥有同一个指针地址,进行释放时,会对这一个地址进行两次释放,程序一定会异常。所以拷贝时候不能像浅拷贝一样直接赋值,而是要申请一块新的内存,内存里面存放的是被拷贝对象类成员的指针指向的值。深拷贝是需要自己手动写。

?

析构函数

析构函数一般做的事情是释放掉使用了系统资源的地方。当对象的生命周期结束时,就会调用析构函数。编译器不会默认提供析构函数

?

对象的初始化顺序

一般来说,最先初始化的是父类,然后是对象的成员,再到对象的构造函数。当对象生命周期结束时,则是对象的析构函数先执行,再到父类的析构函数。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读