【C++系列P5】‘类与对象‘-三部曲——[对象&特殊成员](3/3)
【摘要】 编辑 前言大家好吖,欢迎来到 YY 滴 C++系列 ,热烈欢迎!【 '类与对象'-三部曲】的大纲主要内容如下:编辑如标题所示,本章是【 '类与对象'-三部曲】三章中的第三章节——对象&成员章节,主要内容如下:编辑目录一.const成员/成员函数一.用const修饰this指针的好处——含权限知识点二.能否所有的成员函数都加上const? 三.几个的使用场景二.匿名对象(即临时对...
前言
- 大家好吖,欢迎来到 YY 滴 C++系列 ,热烈欢迎!
- 【 '类与对象'-三部曲】的大纲主要内容如下:
- 如标题所示,本章是【 '类与对象'-三部曲】三章中的第三章节——对象&成员章节,主要内容如下:
目录
五.static应用:"实现一个类,计算程序中创建出了多少个类对象"
一.const成员/成员函数
将const修饰的“成员函数”称之为const成员函数,const修饰类成员函数,实际修饰该成员函数隐含的this 指针,表明在该成员函数中不能对类的任何成员进行修改
图示:
一.用const修饰this指针的好处——含权限知识点
PS:权限知识点在下方
用const修饰this指针的好处:
- 普通对象和const对象都能调用;
图示:
权限相关知识点:
【权限等级较高的是const和具有常属性的量,权限较低的是普通数据】
- 权限高的或平级的可以给另一量取别名/取地址(权限的缩小和平移)
- 权限低的不能给另一量取别名/取地址(权限的放大)
图示:
二.能否所有的成员函数都加上const?
答案:不是的,要修改成员变量的函数不能加。
三.几个的使用场景
请思考下面的几个问题:
- 1. const对象可以调用非const成员函数吗?no
- 2. 非const对象可以调用const成员函数吗?yes
- 3. const成员函数内可以调用其它的非const成员函数吗?no
- 4. 非const成员函数内可以调用其它的const成员函数吗?yes
二.匿名对象(即临时对象)
特性:
- 匿名对象的生命周期在当前行
- 匿名对象具有常性
- const+引用 :会延长匿名对象在当前函数局部域生命周期
三.static静态成员
一.静态成员基本知识
声明为static的类成员称为类的静态成员,用static修饰的成员变量,称之为静态成员变量;用static修饰的成员函数,称之为静态成员函数。
使用要点:静态成员变量一定要在类外进行初始化
二.静态成员特性
- 静态成员为所有类对象所共享,不属于某个具体的对象,存放在静态区
- 静态成员变量必须在类外定义,定义时不添加static关键字,类中只是声明
- 类静态成员即可用 类名::静态成员 或者 对象.静态成员 来访问
- 静态成员函数没有隐藏的this指针,不能访问任何非静态成员
- 静态成员也是类的成员,受public、protected、private 访问限定符的限制
三.静态成员函数和非静态成员函数的调用关系
请思考下面的几个问题:
- 静态成员函数可以调用非静态成员函数吗?no(无this指针)
- 非静态成员函数可以调用类的静态成员函数吗? yes
四.static的应用:“求1+2+3+...n的和"
步骤:
- 将成员变为静态成员变量
- 利用访问操作符与静态成员函数GetRet()得到_ret(和)
图示:
五.static应用:"实现一个类,计算程序中创建出了多少个类对象"
原理:
- 定义一个静态成员变量_scount,再在类中声明一个访问静态成员变量的静态成员函数GetACount();
- 构造++_scount,析构--_scount;
代码演示:
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)