day14|static关键字和const关键字的作用、常量指针和指针常量之间有什么区别、结构体和类之间有什么区别

day14|C++重难点之 static关键字和const关键字的作用、常量指针和指针常量之间有什么区别、结构体和类之间有什么区别

    • 37.static关键字和const关键字的作用
    • 38.常量指针和指针常量之间有什么区别
    • 39.结构体和类之间有什么区别

37.static关键字和const关键字的作用

1. static 关键字:用于控制 变量和函数 的 生命周期、作用域 和 访问权限

  • 首先,用static可以声明静态变量:静态变量的生命周期 在整个程序运行期间 都存在。当在 函数内部 声明静态变量时,即使函数执行完了也不会释放它,下次调用该函数时 会保留上次的状态
  • 其次,在类中,被static声明的成员称为静态成员,包括 静态成员变量 和 静态成员函数:
    • 静态成员变量:是在类中使用 static 修饰的 成员变量,表示该变量 属于类 而不是 类的实例,所有实例 共享同一份数据
    • 静态成员函数:是在类中使用 static 修饰的 成员函数,表示所有对象 共享同一个函数;静态成员函数 只能访问 静态成员变量;而且静态成员函数的调用 可以不通过创建 类的实例,而是直接通过 类名 调用
  • 最后,static变量 如果被 多线程 访问,需要特别注意 线程安全 问题

2. const关键字

  • 首先,用const可以声明 常量变量,使变量的值成为 只读状态,不能被修改
  • 其次,声明 常量成员函数,表示 该函数 不会修改 对象的成员变量
  • 再次,可以用于定义 常量指针,可以定义一个指向 const类型的值的指针,表明 该指针 不能修改 它所指向的值
  • 最后,const变量由于不可变性,天然具有 线程安全

3. 有时候 static 和 const 可以组合使用,如 static const 变量,表示一个静态的常量

总之,static 用于 创建类的静态成员,const 用于 定义常量

38.常量指针和指针常量之间有什么区别

它们的区别主要在于 它们所指向的值 是否可以被修改,以及 它们自己的值 是否可以被修改

  • 常量指针 是指 指向常量 的指针,我们不能通过这个指针 来修改它所指向的值,但是指针本身的值,也就是 它所指向的地址 是可以改变的
  • 指针常量 是指 指针本身是常量,也就是说 一旦被初始化,它所指向的地址 就不可更改了。但是 它所指向的数据是可以被修改的
  • 也可以同时使用 两个const关键字 来修饰 指针,使得它既是 常量指针,又是 指针常量,也就是 它所指向的数据 不能被修改,同时 它本身的值 也不能被修改

39.结构体和类之间有什么区别

  1. 在 C++中,struct 类似于 class,即可以包含成员变量,又可以包含成员函数
  2. 它们的不同点在于:
  • 首先,class的成员 都是默认 private的,而struct的成员 都是默认 public的
  • class继承 默认的也是 private,而 struct继承 默认的是 public
  • class 可以用于定义模板函数,而 struct 不行
  • 实际使用中,struct 通常用于 定义一些POD类型,它用来 描述一种数据结构的特性,主要用于 在内存中 表示简单的数据结构

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/60601.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Android、IOS、Flutter、鸿蒙、ReactNative 】标题栏

Android 标题栏 参考 Android Studio版本 配置gradle镜像 阿里云 Android使用 android:theme 显示标题栏 添加依赖 dependencies {implementation("androidx.appcompat:appcompat:1.6.1")implementation("com.google.android.material:material:1.9.0")…

pytorch量化训练

训练时量化(Quantization-aware Training, QAT)是一种在模型训练过程中,通过模拟低精度量化效应来增强模型对量化操作的鲁棒性的技术。与后训练量化不同,QAT 允许模型在训练过程中考虑到量化引入的误差,从而在实际部署…

docker--工作目录迁移

前言 安装docker,默认的情况容器的默认存储路径会存储系统盘的 /var/lib/docker 目录下,系统盘一般默认 50G,容器输出的所有的日志,文件,镜像,都会存在这个地方,时间久了就会占满系统盘。 一、…

开发效率工具链全解析

🛠 开发效率工具链全解析:从入门到精通 在现代前端开发中,高效的工具链对于提升开发效率至关重要。本文将全方位剖析项目脚手架、包管理工具以及构建工具的深度集成与实战应用。 📑 内容导航 工具链概述项目脚手架包管理工具常见…

[ 网络安全介绍 3 ] 网络安全事件相关案例有哪些?

🍬 博主介绍 👨‍🎓 博主介绍:大家好,我是 _PowerShell ,很高兴认识大家~ ✨主攻领域:【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】 🎉点赞➕评论➕收藏 养成习…

【Unity基础】Unity中碰撞及触发类物理交互应用场景说明

一、碰撞类回调方法 在Unity中,碰撞类回调方法是用于处理物体间碰撞的逻辑。这些方法常用于 MonoBehaviour 脚本中,以便在物体发生碰撞时进行响应。以下是最常用的三个碰撞类回调方法的详细说明: 1. OnCollisionEnter(Collision collision)…

【MySQL】MySQL中的函数之REGEXP_SUBSTR

在 MySQL 中,REGEXP_SUBSTR() 函数用于从字符串中提取与正则表达式匹配的子串。这个函数也是从 MySQL 8.0 开始引入的。下面是一些关于如何使用 REGEXP_SUBSTR() 的详细说明和示例。 基本语法 REGEXP_SUBSTR(str, pat [, position [, occurrence [, match_type ]]…

使用Java绘制图片边框,解决微信小程序map组件中marker与label层级关系问题,label增加外边框后显示不能置与marker上面

今天上线的时候发现系统不同显示好像不一样,苹果手机打开的时候是正常的,但是一旦用安卓手机打开就会出现label不置顶的情况。尝试了很多种办法,也在官方查看了map相关的文档,发现并没有给label设置zIndex的属性,只看到…

arm64架构的linux 配置vm_page_prot方式

在 ARM64 架构上,通过 vm_page_prot 属性可以修改 UIO 映射内存的访问权限及缓存策略,常见的有非缓存(Non-cached)、写合并(Write Combine)等。下面是 ARM64 常用的 vm_page_prot 设置及其对应的操作方式。…

Redisson的可重入锁

初始状态: 表示系统或资源在没有线程持有锁的情况下的状态,任何线程都可以尝试获取锁。 线程 1 获得锁: 线程 1 首次获取了锁并进入受保护的代码区域。 线程 1 再次请求锁: 在持有锁的情况下,线程 1 再次请求锁&a…

探秘Spring Boot中的@Conditional注解

文章目录 1. 什么是Conditional注解?2. 为什么需要Conditional注解?3. 如何使用Conditional注解?4. Conditional注解的高级用法5. 注意事项6. 结语推荐阅读文章 在Spring Boot的世界里,配置的灵活性和多样性是至关重要的。有时候&…

三周精通FastAPI:37 包含 WSGI - Flask,Django,Pyramid 以及其它

官方文档:https://fastapi.tiangolo.com/zh/advanced/wsgi/ 包含 WSGI - Flask,Django,其它 您可以挂载多个 WSGI 应用,正如您在 Sub Applications - Mounts, Behind a Proxy 中所看到的那样。 为此, 您可以使用 WSGIMiddlewar…

Swagger UI

Swagger UI 是一个开源工具,用于可视化、构建和交互式地探索 RESTful API。 它是 Swagger 生态系统的一部分,Swagger 是一套用于描述、生成、调用和可视化 RESTful Web 服务的工具和规范。 Swagger UI 可以自动生成 API 文档,并提供一个交互…

thinkphp6 --数据库操作 增删改查

一、数据库连接配置 如果是本地测试,它会优先读取 .env 配置,然后再读取 database.php 的配置; 如果禁用了 .env 配置,则会读取数据库连接的默认配置: # .env文件,部署服务器,请禁用我 我们可以…

WPF中MVVM工具包 CommunityToolkit.Mvvm

CommunityToolkit.Mvvm,也称为MVVM工具包,是Microsoft Community Toolkit的一部分。它是一个轻量级但功能强大的MVVM(Model-View-ViewModel)库,旨在帮助开发者更容易地实现MVVM设计模式。 特点 独立于平台和运行时&a…

【蓝桥等考C++真题】蓝桥杯等级考试C++组第13级L13真题原题(含答案)-最大的数

CL13 最大的数(20 分) 输入一个有 n 个无重复元素的整数数组 a&#xff0c;输出数组中最大的数。提示&#xff1a;如使用排序库函数 sort()&#xff0c;需要包含头文件#include 。输入&#xff1a; 第一行是一个正整数 n(2<n<20)&#xff1b; 第二行包含 n 个不重复的整…

让Git走代理

有时候idea提交代码或者从github拉取代码&#xff0c;一直报错超时或者:Recv failure: Connection was reset,下面记录一下怎么让git走代理从而访问到github。 1.打开梯子 2.打开网络和Internet设置 3.设置代理 记住这个地址和端口 4.打开git bash终端 输入以下内容 git c…

vivo 游戏中心包体积优化方案与实践

作者&#xff1a;来自 vivo 互联网大前端团队- Ke Jie 介绍 App 包体积优化的必要性&#xff0c;游戏中心 App 在实际优化过程中的有效措施&#xff0c;包括一些优化建议以及优化思路。 一、包体积优化的必要性 安装包大小与下载转化率的关系大致是成反比的&#xff0c;即安装…

Leetcode 每日一题 125.验证回文串

问题定义 给定一个字符串s&#xff0c;我们需要判断它是否是一个回文串。但在此之前&#xff0c;我们需要将所有大写字符转换为小写字符&#xff0c;并移除所有非字母数字字符。只有经过这样处理后的字符串&#xff0c;我们才进行回文检测。 示例解析 以下是几个示例&#x…

Struts扫盲

Struts扫盲 这里的struts是struts1。以本文记录我的那些复习JavaEE的痛苦并快乐的晚上 Struts是什么 框架的概念想必大家都清楚&#xff0c;框架即“半成品代码”&#xff0c;是为了简化开发而设计的。一个项目有许多分层&#xff0c;拿一个MVC架构的Web应用来说&#xff0c;有…