C++修饰符类型

一、存储类运算符

auto(自动存储类,但在现代C++中,它通常用于自动类型推导)

register(建议编译器将变量存储在寄存器中,但现代编译器通常忽略此关键字)

static(静态存储类,用于局部变量、全局变量、函数和类成员)

extern(用于声明在其他地方定义的变量或函数)

mutable(允许在const类的非常量成员函数中修改成员变量)

thread_local(C++11引入,用于声明变量的生命周期与线程相同)

二、类型修饰符

const(常量,不可修改)

volatile(告诉编译器不要优化对该变量的访问,因为它可能在程序外部被修改)

signed 和 unsigned(用于整数类型,表示数值的符号属性)

long 和 short(用于调整整数类型的大小)

explicit(用于构造函数,防止不希望的隐式类型转换)

三、访问修饰符(在类中)

public(成员可以被任何代码访问)

protected(成员可以被类的成员函数、友元函数或派生类访问)​​​​​​

private(成员只能被类的成员函数和友元函数访问)

四、作用域解析运算符​​​​​​​

::(作用域解析运算符,用于指定类、命名空间或其他作用域中的成员)

五、函数修饰符

inline(建议编译器内联函数,即将函数调用替换为函数体,以减少函数调用的开销)

virtual(在基类中声明,允许派生类覆盖该函数)

override(C++11引入,确保成员函数确实覆盖了基类中的虚函数)

final(C++11引入,禁止类被继承,或禁止虚函数在派生类中被覆盖)

​​​​​​​noexcept(C++11引入,指定函数不会抛出异常)

六、模板修饰符

​​​​​​​template(用于声明模板类、模板函数等)

七、友元修饰符

​​​​​​​​​​​​​​friend(声明友元函数或友元类,这些函数或类可以访问类的私有和保护成员)

举个例子

//访问修饰符
class MyClass {  
public:  int publicVar;  
protected:  int protectedVar;  
private:  int privateVar;  
};  int main() {  MyClass obj;  obj.publicVar = 10; // 访问 public 成员  // obj.protectedVar = 20; // 错误:无法从类外部直接访问 protected 成员  // obj.privateVar = 30; // 错误:无法从类外部直接访问 private 成员  return 0;  
}//存储修饰符
class MyClass {  
public:  static int staticVar; // 静态成员变量  
};  int MyClass::staticVar = 0; // 静态成员变量需要在类外部定义  void function() {  extern int globalVar; // 声明外部变量  // ... 假设 globalVar 在其他地方已定义  register int regVar; // register 修饰符在现代编译器中通常被忽略  const class WithConst {  public:  mutable int mutVar; // 可变的成员变量,可以在 const 成员函数中被修改  } obj;  const WithConst* constPtr = &obj;  constPtr->mutVar = 5; // 可以在 const 成员函数外通过非 const 指针修改 mutable 成员  
}  // thread_local 示例  
thread_local int tlsVar = 0; // 每个线程都有自己的 tlsVar 副本//类型修饰符
const int constVar = 10; // 不可变的整数  
volatile int volVar; // 可能被外部因素(如硬件)改变的整数  
signed int signedInt = -5; // 有符号整数  
unsigned int unsignedInt = 5; // 无符号整数  
short shortVar = 100; // 短整数  
long longVar = 1000000000; // 长整数  
float floatVar = 3.14f; // 单精度浮点数  
double doubleVar = 3.141592653589793; // 双精度浮点数  
long double longDoubleVar = 3.141592653589793238L; // 扩展双精度浮点数//函数修饰符
class Base {  
public:  virtual void virtualFunc() { /* ... */ } // 虚函数  
};  class Derived : public Base {  
public:  void virtualFunc() override { /* ... */ } // 重写虚函数并使用 override 修饰符  
};  class FinalClass final { // 使用 final 修饰符的类,不能被继承  
public:  void finalFunc() final { /* ... */ } // 使用 final 修饰符的函数,不能被重写  
};  class NoImplicitConv {  
public:  explicit NoImplicitConv(int x) : value(x) {} // 构造函数使用 explicit 修饰符,防止隐式转换  
private:  int value;  
};  void noExceptFunc() noexcept { // 声明函数不会抛出异常  // ...  
}//其他
constexpr int constexprVar = 10; // 编译时常量  
alignas(double) char alignedArray[sizeof(double) * 10]; // 强制对齐的数组

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

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

相关文章

国产压缩包工具——JlmPackCore SDK说明(二)——JlmPack_Create函数说明

一、JlmPack_Create函数说明 JlmPack_Create函数是创建jlm压缩文件的核心函数,最大允许CATALOG_MAX_LIMIT(请参考Config.h)个目录,意思是包括文件夹和文件在内,遍历整个列表最大允许CATALOG_MAX_LIMIT个目录对象&#…

《昇思25天学习打卡营第4天|数据集 Dataset》

文章目录 前言:今日所学:1. 数据集加载2. 数据集迭代3. 数据集常用操作与自定义数据集 前言: 今天学习的是数据集的内容。首先,数据是深度学习的基石,高质量的数据输入能够在整个深度神经网络中发挥积极作用。MindSpo…

【UE5.1】Chaos物理系统基础——01 创建可被破坏的物体

目录 步骤 一、通过笔刷创建静态网格体 二、破裂静态网格体 三、“统一” 多层级破裂 四、“簇” 群集化的破裂 五、几何体集的材质 六、防止几何体集自动破碎 步骤 一、通过笔刷创建静态网格体 1. 可以在Quixel Bridge中下载两个纹理,用于表示石块的内外纹…

C++中的类型转换操作符:static_cast reinterpret_cast const_cast dynamic_cast

目录​​​​​​​ C语言中的类型转换 C中的类型转换 C中的类型转换操作符 static_cast reinterpret_cast const_cast volatile关键字 赋值兼容 dynamic_cast C语言中的类型转换 基本概念:赋值运算符左右两侧类型不同,或形参与实参类型不匹配…

如何在宝塔面板中配置SSL证书?

目录 一、申请证书二、登录宝塔面板配置SSL证书一、申请证书 登录华为云,进入“云证书管理服务 CCM”: 点击“购买证书”: 选择“DV(Basic)”->“DigiCert”,点击【立即购买】购买有效期为3个月的免费证书。 申请证书:

JAVA里的object类

public static String toString(Object o) // 获取对象的字符串表现形式 public static boolean equals(Object a, Object b) // 比较两个对象是否相等 public static boolean isNull(Object obj) // 判断对象是否为null pu…

基于单片机的 LED 照明灯智能调光系统设计

摘  要: 社会经济的不断发展,推动了智能化生活的进程,智能调光技术开始广泛应用在生活中,人们也逐渐提高了灯光亮灯率等的要求。基于此,笔者主要设计了基于单片机的 LED 照明灯智能调光系统,希望能够为相关…

骨传导耳机哪个牌子好?精选靠谱好用的TOP5骨传导耳机推荐!

在超过八成的音乐爱好者都面临听力健康问题的当下,骨传导耳机因其独特的听觉体验和对听力的保护,在音频设备市场中备受瞩目。但近期我发现不少用户在选购骨传导耳机时常常受到不专业产品的误导。身为有着5年经验的数码博主,在此提醒大家&…

老师怎样用微信发布期末成绩

老师们,期末季又到了,还在为如何发布成绩而头疼?今天,就让我来分享一些小技巧,让你们在微信上发布成绩更加高效,同时又能保护学生的隐私。 首先,我们要确保成绩的安全性和隐私性。在微信上&…

数据恢复篇:如何在 Android 手机上恢复未保存/删除的 Word 文档

在 Android 手机上访问 Word 文档通常很简单,但是当这些重要文件被删除或未保存时会发生什么?这种情况虽然令人痛苦,但并非毫无希望。到 2024 年,有几种强大的方法来处理此类数据丢失。本指南重点介绍如何在Android手机上恢复已删…

Python | Leetcode Python题解之第208题实现Trie(前缀树)

题目: 题解: class Trie:def __init__(self):self.children [None] * 26self.isEnd Falsedef searchPrefix(self, prefix: str) -> "Trie":node selffor ch in prefix:ch ord(ch) - ord("a")if not node.children[ch]:retur…

2008-2022年款哈弗维修手册和电路图线路图接线图资料更新

经过整理,2005-2022年款长城哈弗全系列已经更新至汽修帮手资料库内,覆盖市面上99%车型,包括维修手册、电路图、新车特征、车身钣金维修数据、全车拆装、扭力、发动机大修、发动机正时、保养、电路图、针脚定义、模块传感器、保险丝盒图解对照…

word怎么转换成pdf?分享3种PDF文件转换技巧

word怎么转换成pdf?在日常办公中,将Word转换成PDF可以带来诸多便利。首先,PDF格式具有跨平台的通用性,无论在哪个操作系统或设备上,都能保持文档的原始布局和格式。其次,PDF文件不容易被篡改,可…

【Unity】 HTFramework框架(五十二)使用 HybridCLR 热更新

更新日期:2024年7月1日。 Github源码:[点我获取源码] Gitee源码:[点我获取源码] 索引 HybridCLR 热更新一、启用宏定义二、导入HybridCLR三、设置热更新程序集四、资源、代码热更 HybridCLR 热更新 HybridCLR是一个特性完整、零成本、高性能…

Mac多线程下载管理器:Neat Download Manage 最新版

Neat Download Manager(NDM)是一款功能强大的下载管理软件,它可以帮助用户更有效地管理和下载网络资源。这款软件支持多种浏览器和协议,可以提升下载速度,恢复中断的下载任务,以及自动化下载过程。在使用任…

如何设置农历日程提醒 农历提醒小妙招

在中国,农历仍然承载着深厚的文化传统和民俗意义。无论是庆祝传统节日,还是纪念亲朋的生日,农历日期都显得格外重要。然而,随着生活节奏的加快,我们有时会因忙碌而遗忘这些特殊的日子。这时,一个能够准确提…

游戏AI的创造思路-技术基础-关于艾宾浩斯遗忘曲线的迷思

对于艾宾浩斯遗忘曲线和函数,我一直都有小小的迷思,总想实验下用艾宾浩斯函数来替换sigmoid函数作为激活函数,打造更接近人类的AI算法,这篇文章旨在讨论下 目录 3.10. 艾宾浩斯曲线 3.10.1. 定义 3.10.1.1. 曲线计算公式 3.10…

干货分享:Spring中经常使用的工具类(提示开发效率)

环境:Spring5.3…30 1、资源工具类 ResourceUtils将资源位置解析为文件系统中的文件的实用方法。 读取classpath下文件 File file ResourceUtils.getFile(ResourceUtils.CLASSPATH_URL_PREFIX "logback.xml") ; // ...读取文件系统文件 file Resou…

【刷题汇总--数字统计、两个数组的交集、点击消除(栈)】

C日常刷题积累 今日刷题汇总 - day0011、数字统计1.1、题目1.2、思路1.3、程序实现 2、两个数组的交集2.1、题目2.2、思路2.3、程序实现 3、点击消除(栈)3.1、题目3.2、思路3.3、程序实现 今日刷题汇总 - day001 1、数字统计 1.1、题目 请统计某个给定范围[L, R]的所有整数中…