C++基础(3)——类和对象(1)

news/2024/11/7 17:01:28/

前言

本文主要介绍了C++中类和对象的基本知识

4.1.1:封装

写一个Circle类,然后分别在栈上和堆上创建两个圆对象,对象包含属性和行为,调用求周长的成员函数,并打印出结果。

4.1.2:封装-访问权限

public成员 类内可以访问 类外也可以访问
protected成员 类内可以访问 类外不能访问,子类可以访问父类的保护内容
private成员 类内可以访问 类外不能访问,子类不可以访问父类的私有内容

4.1.3:struct和class的区别

C++structclass默认的访问权限是不同的。struct默认权限是publicclass默认权限private

C中的结构体不能定义一个函数,C++中可以定义一个函数

C中结构体包含函数定义会报错

 C++中的结构体就可以定义函数

4.2.1:构造函数和析构函数

C语言可以通过__attribute__关键字来修饰函数,实现类似C++中构造函数和析构函数的效果,让函数在main函数调用之前和调用之后执行。

构造函数可以有参数,可以发生重载;析构函数不可以有参数,不能发生重载

4.2.2:构造函数的分类和调用(有参构造、无参构造、拷贝构造、括号法、显示法、隐式法)

1:无参构造和有参构造

在创建一个对象时,如果使用默认构造函数时要写成Circle c1,而不要写成Circle c1(),编译器会将 Circle c1()当成一个函数声明,不会执行默认无参的构造函数

2:普通构造、拷贝构造和括号法

拷贝构造:在创建一个对象的时候传入另外一个对象

3:显示法(通过匿名对象)

 匿名对象:当前行结束之后,系统会立即回收掉匿名对象

 

如果没有给左侧对象赋值:

 不要使用拷贝法来创建一个匿名对象

4:隐式法

4.2.3:拷贝函数的调用时机

1:使用一个已经创建完毕的对象来初始化一个新对象

2:值传递的方式给函数的参数传值

如果将参数的类型改成引用,即doWork(Circle &r),那么在传入参数的时候就不会调用拷贝构造函数

对象引用时不会调用构造函数

3:值方式返回局部对象(Linux下好像不太成立)

test函数中中直接调用doWork,在doWork中创建的对象的生存周期只有在本行

doWork的返回值用一个对象进行接收,不会调用拷贝构造函数,但对象的生成周期是函数体执行完毕

打印一下地址发现c1和circle的地址都是一样的,表明只有一个对象

4.2.4:构造函数的调用规则

1:创建一个类,编译器都会至少给每一个类添加默认构造函数、析构函数、拷贝构造函数

2:如果写了有参构造,那么编译器就不会提供无参构造,但依然后拷贝构造;如果写了拷贝构造函数,那么其他构造函数都不会提供

总结

以上就是本文的全部内容,非常感谢你能看到这。

 

 

 


http://www.ppmy.cn/news/479245.html

相关文章

力扣算法刷题Day36|贪心:无重叠区间 划分字母区间 合并区间

力扣题目:#435. 无重叠区间 刷题时长:参考答案后5min 解题方法:排序 复杂度分析 时间O(nlogn)空间O(1) 问题总结 判断出重叠空间后无需从数组中移除,可通过更新右边界为重叠两区间右边界的最小值,用以和后续区间…

感谢ChatGPT,救了我狗的命!

前一段时间,国外一位小哥哥在推特上发布了一条消息,声称GPT-4拯救了自家狗狗的性命。 这是怎么一回事呢? 这个小哥哥养了一只两岁的边境牧羊犬,这只牧羊犬被诊断出患有蜱传疾病,这属于一种细菌性传染病。 虽然小哥哥一…

2021-2027全球及中国表面轮廓仪行业研究及十四五规划分析报告

【报告篇幅】:149 【报告图表数】:200 【报告出版时间】:2021年1月 报告摘要 本报告研究“十三五”期间全球及中国市场表面轮廓仪的供给和需求情况,以及“十四五”期间行业发展预测。重点分析全球主要地区表面轮廓仪的的产能、…

软件测试sd卡真伪,亲测,拼多多上买的SD卡到底是不是正品

原标题:亲测,拼多多上买的SD卡到底是不是正品 前一阵让二手回收了一直用的尼康D750,换了索尼a6400,尼康D750用的双64G SD卡都是U1的,读写速度都不够快,恰好看到拼多多上的SanDisk的优惠信息,San…

2021年汽车激光雷达行业研究报告

1. 汽车行业价值重心后移,自动驾驶发展感知先行 ​ “新制造新服务”推进汽车行业价值重心后移。当前汽车行业已于百年变革 节点起步,制造技术变革叠加 5G 逐步应用,助力行业由电动化开始迈入智能化、 网联化新时代。谷歌、华为、百度等新型…

XML的编写

文章目录 XML什么是XML如何编写格式良好的XMLDOM解析XML技术JSONJSON的语法格式 DOM4J解析XML文件 XML 什么是XML XML是一个可扩展标记语言。XML和操作系统编程语言的开发平台无关,可以实现不同系统之间的数据交换。 XML的规范 XML文档内容是由一系列标签元素组…

全球及中国接触式视频测量仪行业研究及十四五规划分析报告

【报告篇幅】:145 【报告图表数】:198 【报告出版时间】:2021年1月 报告摘要 2019年,全球接触式视频测量仪市场规模达到了xx亿元,预计2026年可以达到xx亿元,年复合增长率(CAGR)为xx%。中国市场规模增长…

2021-2027全球与中国X射线检测系统市场现状及未来发展趋势

2021-2027全球与中国X射线检测系统市场现状及未来发展趋势 全球X射线检测系统主要厂商有YXLON International、Nikon Metrology、Nordson、ZEISS、GE Measurement & Control等,X射线检测系统前五大厂商共占有超过40%的市场份额。目前中国是全球最大的X射线检测系…