C++修饰符类型

news2024/11/18 0:03:05

一、存储类运算符

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.coloradmin.cn/o/1882434.html

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

相关文章

zdppy_api+vue3+antd开发前后端分离的预加载卡片实战案例

后端代码 import api import upload import timesave_dir "uploads"async def rand_content(request):key api.req.get_query(request, "key")time.sleep(0.3)return api.resp.success(f"{key} " * 100)app api.Api(routes[api.resp.get(&qu…

泛型的使用(<T>)

文章目录 前言一、泛型是什么?二、泛型的使用 1.定义泛型类2.泛型的常规用法总结 前言 强制类型转换存在一定隐患,如数据丢失、内存溢出、运行时错误、程序逻辑错误等。所以提供了泛型机制,使程序员可以定义安全的数据类型进行操作。通俗的理…

比较(五)利用python绘制棒棒糖图

比较(五)利用python绘制棒棒糖图 棒棒糖图(Lollipop plot)简介 棒棒糖图实际上是修饰后的条形图。当在处理大量的值,并且当这些值都很高时,棒棒糖图就很有用。 快速绘制 基于matplotlib import pandas as…

基于单片机的 LED 花样照明时钟设计

摘要 : 本设计是基于单片机的 LED 花样照明 , 并附加时钟设计 . 单片机也叫微控制器 ( Micro Control Unit, 简称 MCU ), 因其价格低廉 , 功能强大 , 在实际应用中得到广泛认可 . 本设计…

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

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

remix测试文件测试智能合约

remix内其实也是可以通过编写测试文件来测试智能合约的,需要使用插件自动生成框架以及测试结果。本文介绍一个简单的HelloWorld合约来讲解 安装插件多重检测: (solidity unit testing) 编译部署HelloWorld合约 // SPDX-License-Identifier: MIT pragma solidity ^0.8.0;c…

喜报 | 极限科技获得北京市“创新型”中小企业资格认证

2024年6月20日,北京市经济和信息化局正式发布《关于对2024年度4月份北京市创新型中小企业名单进行公告的通知》,极限数据(北京)科技有限公司凭借其出色的创新能力和卓越的企业实力,成功获得“北京市创新型中小企业”的…

【SpringBoot Web框架实战教程】06 SpringBoot 整合 Druid

不积跬步,无以至千里;不积小流,无以成江海。大家好,我是闲鹤,微信:xxh_1459,十多年开发、架构经验,先后在华为、迅雷服役过,也在高校从事教学3年;目前已创业了…

wordpress 付费主题modown分享,可实现资源付费

该主题下载地址 下载地址 简介 Modown是基于Erphpdown 会员下载插件开发的付费下载资源、付费下载源码、收费附件下载、付费阅读查看隐藏内容、团购下载的WordPress主题,一款针对收费付费下载资源/付费查看内容/付费阅读/付费视频/VIP会员免费下载查看/虚拟资源售…

第二证券:股票型ETF持续“吸金” 上半年净流入逾4000亿元

2024年上半年行情收官,A股盈余板块领涨商场,银行指数大涨逾17%,居首;煤炭、公用事业两大职业指数均涨超10%。综合板块跌幅最大,上半年累计跌幅超33%;计算机、商贸零售、社会服务等指数均跌超20%。 在股票型…

周报0624-0701--输入CMP数据的准备

一、代码理解 目的:设计思路(根据) 【主程序】多进程,linux,tensorflow 随机生成速度模型的显示颜色,位置,大小 训练的多进程安排 创建目录、环境变量,来存储CMP地震数据 定义变量&…

六西格玛培训引领久立特材品质新高度,行业领军再升级

久立特材六西格玛管理项目于6月27 日启动。久立特材作为行业内的领军企业,此次引入六西格玛管理法,旨在进一步提升企业运营效率和产品质量,实现持续改进和卓越运营。 久立特材的高层领导与张驰咨询的资深顾问朱老师共同出席项目启动仪式&am…

DETRs Beat YOLOs on Real-time Object Detection论文翻译

cvpr 2024 论文名称 DETRs在实时目标检测上击败YOLO 地址 https://arxiv.longhoe.net/abs/2304.08069 代码 https://github.com/lyuwenyu/RT-DETR 目录 摘要 1介绍 2.相关工作 2.1实时目标探测器 2.2.端到端物体探测器 3.检测器的端到端速度 3.1.NMS分析 3.2.端到端速度…

百事可乐推出具有视频屏幕和人工智能技术的智能罐头

在最近于法国戛纳举行的国际创意节上,百事公司推出了创新的智能罐头。这些罐头不同于传统产品,它们采用了环绕式3D屏幕,能够展示高清视频内容,为品牌宣传和促销带来了全新的视角。经过两年多的精心研发,这些智能罐成为…

【数据结构与算法】探索数组在堆数据结构中的妙用:从原理到实现

💓 博客主页:倔强的石头的CSDN主页 📝Gitee主页:倔强的石头的gitee主页 ⏩ 文章专栏:《数据结构与算法》 期待您的关注 ​​ 目录 一、引言 二、堆的基本概念 🍃堆的特性 🍃堆的分类 三、…

Python Tkinter:开发一款文件加密解密小工具

在这个信息泄露风险日益增加的时代,使用文件加密工具对于保护个人隐私和企业机密至关重要。 本文介绍了一款小工具——encryptDecrypt,它不仅提供了一个易于使用的图形界面,简化了加密和解密过程,还确保了数据的安全性&#xff0c…

国产压缩包工具——JlmPackCore SDK说明(一)

一、什么是JlmPackCore SDK (1)自主可控 JlmPackCore是一套基于我国自主知识产权的核心算法发明专利——杰林码(详系请参考《杰林码原理及应用》一书,也可以参考后续发表的相关论文),其中一篇会议论文&…

完全入门C语言

1.C语言 C语言是一门通用的计算机编程语言,广泛应用于底层开发。其设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。有良好的跨平台的特性。 同时C语言还是面向过程的编程语言,…

汇编基础语法

指令格式 1、立即数 一个常数,该常数必须对应8位位图,即一个8位的常数通过循环右移偶数位得到该数,该数位合法立即数 在指令中表示方法:#数字,例如:#100 快速判定是否是合法立即数: 首先将这…