c++学习笔记(3)

类和对象(1)

c++认为万事万物都皆为对象,对象有其属性和行为(统称为成员),具有相同性质的对象,可以抽象称为类

c++面向对象的三大特性为:封装,继承,多态

一,封装

b845fdfef17f49de9cbec90049b48065.png

 4894fcce68674501b2f4f7383e62e64c.jpg

 可以直接在封装的行为里定义函数。

 

4ae904b18eab405484f13c4d2fcd20b9.png

2b785d923bee4e3d9a90dbc612d65319.png 

 ad4c94db9aa043dc94c22a1fffab8044.jpg

 struct和class的区别

struct默认访问权限为公有 ;class默认访问权限为私有

 

成员属性设置为私有,好处1,可以自己控制读写权限。2,对于写可以验证数据有效性。

31dffecfa69740a5ae50b8b7f34d3992.jpg

 

对象的初始化和清理

1,构造函数(初始化)和析构函数(清理,(若堆区有内存,对其释放))

05dde56609e54920aba44d1592b23a60.png

9a348c7c976a4a0da61ed47cbb98ac20.jpg

 

构造函数的分类和调用

按有无参数可分为 无参构造(默认构造)和有参构造。

c95da453845a4f1cbb4b43992b6c662b.png

按 类型分类可分为 普通构造和拷贝构造

1b5881e2d95a440cb2bfb3f989efa4de.png

 (不是拷贝构造就是普通构造)

调用

1,括号法。2,显示法。3,隐私转换发。

1括号法

d5a088c017d84ee5b349bd0e4ff5f5b2.jpg

3822dd9b3c9844479df8a02dcd727baa.jpg 

 2显示法

d22b7177b84343ec909f98fc1034a7b6.jpg

 3隐式转换法

75e04298d27b433b95af0469e542ffa8.jpg

 

拷贝构造函数调用时机:1,使用一个已经创建完毕的对象来初始化一个新对象。2,值传递的方式给函数参数传值。3,值方式返回局部对象。

52681a4670dc4b1aaa619661f32300e7.png

2ad5f32ad3864151bb14b1cc5011f9d5.png 

 319c40dd335246448a2923bac69510ab.png

 

深拷贝与浅拷贝

浅拷贝:利用编译器提供的拷贝构造函数进行的简单的赋值拷贝操作是浅拷贝。浅拷贝带来问题:堆区内存重复释放。(在类中创建一个堆区的数据,利用析构函数对其进行释放,如果用的浅拷贝会将其释放两次,导致程序崩溃。)

深拷贝:自己写一个拷贝构造函数,对堆区数据进行拷贝时重新在堆区开辟空间。

a215b69b79e847519cc25c95d4f190ee.png

 总结:如果属性有在堆区开辟的,一定要自己提供拷贝构造函数,防止浅拷贝带来的问题。

 

初始化列表

ad4e331ea3cb4786b3129e313132e92d.png

 14c2492ba7304ebcaf28c3e69416a123.png

 或

552c69b830d04960a8e78f87687ec5f1.png

 

类对象作为类成员

c++类中的成员可以是另一个类的对象,我们称该成员为对象成员。

当其他类对象作为本类成员,构造时先构造类对象,再构造自身,析构顺序与构造相反。

62c922e0facb47a9b37ebe33ff8a0975.jpg

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值