当前位置: 首页 > news >正文

SYSU程设c++(第三周) 对象类、类的成员、类与结构体的区别、类的静态成员

对象&类

类用于指定对象的形式,它包含数据的表示方法用于处理数据的方法
• 类中的数据和方法称为类的成员。
• 函数在一个类中也被称为类的成员。
定义一个类,其效果是定义一个数据类型的蓝图。它定义了类的对象包括了什么,以及可
在这个对象上执行哪些操作

 例如:( 通过 class 关键字定义了一个类 DATE,然后又通过 DATE 类创建了一个对象 date)

类的成员包括:

⚫ 数据成员:

• 一般说来,数据成员是需要隐藏的;即外部的程序是不能直接访问这些数据的,应该通过函数成员来访问这些数据。
• 所以一般情况下,数据成员通过关键字private声明为私有成员(private member)

⚫ 函数成员:

• 通过关键字public声明为公有成员(public member)。
• 外部程序可以访问公有成员,但无法访问私有成员。


◼ 对于用户而言:

• 只需要获得头文件 DATE.hpp,即可调用类对象的公有函数访问其内部的数据成员。
• 使用者无法直接访问私有成员,也无需知晓公有函数的内部实现

类与结构体的区别

• 通过结构体定义出来的变量传统上叫变量,因为C语言中的 struct 只能包含变量,不能包含函数
• 而C++通过类定义出来的变量有了新的名称,叫做对象(Object)

类的静态成员

从存储的角度来说,静态(static)成员是类的组成部分,但不是任何对象的组成部分
定义方式:

通过在成员声明前加上保留字static将成员设为static,具体如下:
• 在数据成员的类型前,加保留字static声明静态数据成员;
• 在成员函数的返回类型前,加保留字static声明静态成员函数;

访问方式:
⚫static成员遵循正常的公有/私有访问规则。
⚫如果访问控制允许的话,可在类作用域外直接访问静态成员,不需通过对象,需加上类名和::(如果是静态数据成员,在外部再定义完一次后,再使用时就不再需要加类名和::)

◼静态数据成员
• 静态数据成员具有静态生存期,是一个类的所有对象的属性,而不是某个对象的属性。它的储存空间是一个类所有对象共享的
• 与非静态数据成员不同,静态数据成员必须在类定义体的外部再定义恰好一次。通常是在类的实现文件中再定义这一次,而且定义时不能再用static修饰
◼静态成员函数
• 静态成员函数不属于任何对象
• 静态成员函数没有this指针
静态成员函数不能直接访问类的非静态成员(因为不知道是访问哪个对象的),只能直接访问类的静态成员。

例如,定义静态数据成员static int count,和静态成员函数static void getcount()

//count再定义完一次后就可以直接用

 

// 注意静态函数对象访问方式

 

http://www.lryc.cn/news/35431.html

相关文章:

  • Redis管道
  • conda的共用package[硬链接]@pytorch和tensorflow装在同一个环境里好不好?
  • 「Vue面试题」动态给vue的data添加一个新的属性时会发生什么?怎样去解决的?
  • Flutter-Scaffold组件
  • Postman简介及接口测试流程(小菜鸟攻略)
  • kubebuilder注释
  • java日志
  • 研发中台拆分过程的一些心得总结
  • HTTP介绍
  • 10 卷积神经网络及python实现
  • 【立体匹配论文阅读】AANet: Adaptive Aggregation Network for Efficient Stereo Matching
  • 服务器防入侵攻击,安全加固措施
  • 解读:“出境标准合同”与“出境安全评估”要点与异同
  • python带你成功复刻热门手机游戏——飞翔的小鸟
  • YOLOv8初体验:检测、跟踪、模型部署
  • Vue 监听(watch handler)
  • 前端代码质量-圈复杂度原理和实践
  • 汽车微控制器芯片F280039CPZRQ1、F280039CSPM、F280039CSPN规格参数
  • 禾观科技三面经历
  • Spring Boot 实现接口幂等性的 4 种方案
  • Android Studio开发APP
  • Spring之实例化Bean _ @Resource和@Autowired实现原理(3)
  • 华为HCIE学习之Openstack Cinder组件(cinder对接glusterfs)
  • 关于Go语言的底层,你想知道的都在这里!
  • 每日一问-ChapGPT-20230308-关于技术与思考的问题
  • Oracle表分区的创建、新增、拆分
  • 如何快速升级Java 8 到Java11
  • 内卷把同事逼成了“扫地僧”,把Git上所有面试题整理成足足24W字Java八股文
  • 【计组】主存储器有关知识梳理
  • QT对象树