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

C++学习打卡

 类成员的访问

C++的三大特性:封装,继承,多态

类与结构体的最大区别在于,类可以封装对象的行为,也就是函数

类分为数据成员和函数成员,这两者被称为对象的属性和行为

如果我们要对对象的行为和属性进行操控,就需要访问类的成员

访问类的成员不是随意的,这一点受到类中的权限控制,分为public,protect,private,

public:公共(无论类内类外都可以访问)

protect:家族私有(自己和自己的子类成员可以访问)

private:自己私有(只有自己的类成员可以进行访问)

在默认情况下,类的权限是private,而结构体的权限默认是public

关键字区域划分是直到出现下一个关键字为止

内联成员函数

内联成员函数关键字:inline

与普通成员函数不同,内联成员函数一般在类内定义,而普通成员函数一般在类内声明,类外进行定义(这个概念有些许争议,如果你没有分文件进行处理数据可能普通成员函数也在类内定义) 

内联成员函数的时间花销一般比普通函数(注意是普通函数,包括了普通成员函数)更小

原因是内联成员函数在编译时就已经将代码插入到被调用点,在最终执行时不必要将函数重新进行调用。这使得内联成员函数很适用于一些小型计算,如普通的加减运算

内联成员函数的缺点:如果对内敛成员函数进行滥用,可能会导致代码膨胀,也就是说莫名奇妙多出一大段代码

与普通成员函数的区别

  • 定义位置

    • 内联成员函数:定义在类定义内部。

    • 普通成员函数:定义在类定义外部,通常在源文件中。

  • 调用效率

    • 内联成员函数:可能被编译器内联展开,减少函数调用开销。

    • 普通成员函数:通常不会被内联展开,每次调用都会执行函数调用的完整过程。

  • 作用域

    • 内联成员函数:由于定义在类定义内部,可以直接访问类的私有和保护成员。

    • 普通成员函数:定义在类定义外部,需要通过类的实例或指针来访问成员。

静态类成员

关键字:static

由于类成员分为数据成员和成员函数,也就有两种静态类成员

静态类成员属于而不属于对象,静态类成员可以被所有对象所访问,调用方式可以通过类名直接进行访问,由于可以被所有对象所使用,所以需要初始化

静态成员函数的用途

  1. 初始化静态成员变量

    • 静态成员函数常用于初始化静态成员变量,因为静态成员变量属于类本身,而不是某个对象。

  2. 工具函数

    • 静态成员函数可以作为工具函数,提供与类相关的操作,但不需要访问对象的实例数据。例如,一个数学类可以提供静态成员函数来计算数学公式。

  3. 类级别的逻辑

    • 静态成员函数可以实现与类相关的逻辑,例如统计对象数量、管理全局状态等。

静态成员函数与普通成员函数的区别

  • 普通成员函数

    • 属于类的对象,需要对象的上下文(this指针)才能访问非静态成员变量和非静态成员函数。

    • 每次调用时,都需要一个对象实例。

  • 静态成员函数

    • 属于类本身,不需要对象的上下文。

    • 只能访问静态成员变量和其他静态成员函数。

    • 可以通过类名直接调用,而不需要创建对象。

以上这段借鉴了kimi

http://www.xdnf.cn/news/10282.html

相关文章:

  • AI书签管理工具开发全记录(八):Ai创建书签功能实现
  • MSMQ消息队列》》Rabbit MQ》》安装延迟插件、延迟消息
  • 3D-激光SLAM笔记
  • Rollup打包输出产物遇到的一个坑。(分享心得)
  • Redis缓存问题重点详解
  • 57、IdentityServer4概述
  • [创业之路-398]:企业战略管理案例分析-战略意图是使命、愿景可聚焦、可量化、可落地、可实现、具象化的3-5年左右的目标
  • 三步问题 --- 动态规划
  • 二叉搜索树——AVL
  • 小红书 发评论 分析 x-s x-t
  • 在win10/11下Node.js安装配置教程
  • 网络编程1_网络编程引入
  • Centos环境下安装/重装MySQL完整教程
  • [SC]SystemC在CPU/GPU验证中的应用(二)
  • 【数据结构】图的存储(邻接矩阵与邻接表)
  • Spring Data Redis 实战指南
  • Java对象克隆:从浅到深的奥秘
  • 秒杀系统—5.第二版升级优化的技术文档三
  • Brighter 的线程模型:为何专用线程驱动异步消息泵
  • Python(十四)
  • Vue-自定义指令
  • *JavaScript中的Symbol类型:唯一标识符的艺术
  • # STM32F103 PA0到PA4多路ADC采集配置和采集程序
  • SQL进阶之旅 Day 9:高级索引策略
  • sass高阶应用
  • 基于Web的濒危野生动物保护信息管理系统设计(源码+定制+开发)濒危野生动物监测与保护平台开发 面向公众参与的野生动物保护与预警信息系统
  • resubmit v1.2.0 新特性支持类级别防止重复提交
  • 深度学习总结(40)
  • 数据集笔记:SeekWorld
  • 【Java笔记】Spring IoC DI