c++学习笔记4

本文介绍了C++中的类和对象概念,包括静态成员变量与函数、this指针的作用,以及友元、运算符重载(如加法、左移、递增、赋值和关系运算符)的实现原理和注意事项。特别强调了赋值运算符深拷贝的重要性。
摘要由CSDN通过智能技术生成

类和对象(2)

03f297008d61488b9343ab6b4f3ca2b1.png

 静态成员变量代码体现

9f8639fe17e448f4a0cc3010250dd9c5.jpg

 2cd0ae6cff224b1593fbb69e05f7452a.jpg

 12d09ed70aa24d0586cafb2557ae4150.png

静态成员函数 代码体现

686f5e6bc2264daba68f6f61e8252ce4.jpg

 

成员变量和成员函数是分开存储,在c++中只有非静态成员变量菜属于类的对象上。也就是说静态成员变量,静态成员函数,非静态成员函数的存储都不在类上。可通过sizeof()体现。

this指针

e63550adf1d048059a2993b7da3f2c8e.png

 用途一,区分形成和成员变量

456ca002503d4535a7c6bd5a055f4eec.jpg

cee992668bfd4f4ba8234f2abc37ff76.jpg 

 用途2,返回对象本身

638959427c0f4b3c89fd548c721d2c20.jpg

 空指针访问成员函数

39edc89e23af42ffa02d5bd3938ad9f1.jpg

 

const修饰成员函数

04b5bae0c9d140259c5f1a0c28353ffd.png

29b0297b3f01484cb90e0f366d9d6d4a.png 

 

 原理

54f678362cf142b6a0f5f6493075d2f9.jpg

 常对象

3d8a2d8a73384b9abe28d9b8565f75d9.jpg

  友元

149e797a9cbf4880b6f850078cae8e87.png

 全局函数做友元

方法:将全局函数的定义复制到类中且前面加上friend

78b391ab5230429e954d9afcf463d8b6.jpg

 

类做友元

将要做友元的类的定义复制一份到要访问的类的开头并且前面加friend

4649aafb1ba941dc82f025f9afbb7437.png

 成员函数做友元

aaa29d05b0744f028a5bed9767220b7f.png

 

运算符重载

1,加号运算符重载:实现两个自定义类型相加的运算

方法1:在类内写一个成员函数,并以operator+当函数名

a1921ec49ac349d89325ec2ddcd58760.jpg

 方法2:全局函数

2b75c5f45f894bdf96d6de22473bf9a4.jpg

 2,左移运算符重载:可以输出自定义数据类型

只能用全局函数重载左移运算符

62573ef290044c5781c2d2afe48fa2c1.jpg

3,递增运算符重载:实现自己的整型数据

总结:前置递增返回引用,后置递增返回值

011caa5ef3e544438a109047eccc5049.png

5b2d44b1f0344426b91fc472ce135eef.png 

59658baba0d14a7986d7ae8f46d813f5.png 

 4赋值运算符重载:如果类中有属性指向堆区浅拷贝会使堆区空间被释放两次导致程序崩溃,固要用深拷贝

bb7a1a03919d45878e8270d4f022280d.png

577a3c0138224aa2924ea8b1204b25e5.png 

07f624dc56a54ebf9a254da553140d8f.png 

 5,关系运算符重载:可以让两个自定义类型对象进行对比操作

80ea2be313964c0b8351d210f6aab956.png

 6函数调用运算符重载

81fa231459fd4eb3b406cd5609404d6c.png

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值