【C++语法】:过来人的总结,类和对象 2

细谈类和对象

目录

引言

写这篇文章的时候,我已经通过C++开发很久了,现在到了快实习的时候,针对我自己对于C++开发中遇到的问题,以及我自己的理解,现在通过博客来对过去的知识进行回顾和总结,如果我写的内容对你有一些帮助,那真的泰裤辣。

如果你是从上篇文章看到这里的,非常感谢你的耐性,以及感谢你对于我文章的认可。

类中的6个默认成员函数

我们知道在类中,我们可以像在外面一样定义函数,但是,C++在语法上给我们提供了六个默认的函数,当然我们也可以显示的实现。

1. 构造函数

构造build,就是构造这个类的函数,顾名思义,我们如果构造一个类呢,我们就是通过构造函数构造一个类,那么如果想要构建一个类,需要的什么呢?类,类内函数已经实现了,那么构造函数的作用就是初始化==成员变量==。

C++规定:构造函数和函数同名,并且没有返回值。

下面构造的方式,让读者理解一下:
我的成员变量加上_为了区别
在这里插入图片描述

后面:叫做初始化列表,最简单想到的方式是什么在Data函数的内部month_ = month, data_ = data,year_ = year , 为什么我们还有一个初始化列表呢?如果是学过Java的读者知道,Java的构造函数,就是在函数内部直接赋值,但是因为Java一切皆为引用,但是Cpp 不一样,这里看不出什么区别,我们先讲拷贝构造。后面陈述为什么要有初始化列表。

拷贝构造

拷贝构造就是通过拷贝另一个对象来给自己构造。注意,这里不一定一定是通过同一个类型的数据来拷贝,不如如果我实现,我可以通过Teacher类来给Person进行创建。拷贝构造相当于我的作业没写,但是张三写了,我把张三的抄过来了,那我不也写了吗?

在这里插入图片描述

只有构造函数,才能使用初始化列表,拷贝构造也是构造函数。

细谈初始化列表

在这里插入图片描述
我们设计了一个DateTool类,Date类作为他的成员,为什么这里的会爆出不存在默认的构造函数 ==(不需要参数的构造函数)==这个错误,这是因为,成员变量是在初始化列表中进行的初始化,到这{}的时候,d_已经初始化完成了,这个时候d_ = d调用的是Date类的拷贝构造函数,那么我们并没有帮助d_在初始化列表中进行构造,而且Date的构造函数都是有参数的的,所有这个是报错,Date没有默认构造函数。
在这里插入图片描述
这样就解决了,因为d_没有默认的构造函数,不手动构造他就会构造失败。

赋值运算符重载 operator=

我没有写作业,张三写了,我可以抄他的,如果我写了,但是我乱写的,怕被老师骂,所以我把我的作业擦了,还是抄了张三的,这个就是赋值运算符重载。舍弃原来的自己,拷贝别人。

在这里插入图片描述

细节 : 为什么返回Date&
因为支持连等比如
a = b = c只有返回自身的引用才能支持连等。

析构函数

我们创建了一个类,那么怎么销毁呢,就是通过析构函数销毁,对于这种普通的简单数据不需要析构,只有深度数据,如果类中存储的是在堆上开辟的数组之类的数据,我们要在析构函数中进行释放,不然就会内存泄露。

析构函数 : 类名前面加上~表示析构函数
在这里插入图片描述

运算符重载

C++支持operator + 运算符 进行函数重载,比如Date类型肯定不支持加法,但是我们可以为他自定义加法。

在这里插入图片描述

总结

类和对象还有很多的细节知识,比如移动拷贝,移动构造,为什么拷贝必须const但是作为一个C++初学者,了解这么多已经暂时足够了,如果想要了解更多关于C++, 可以关注我,我会只需更新。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值