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

c++ 作用域解析操作符::

目录

什么是 ::?

基本语法

主要用途

1. 访问全局作用域

2. 访问类的静态成员

3. 访问命名空间中的内容

4. 区分嵌套作用域

5. 在类中定义成员函数

注意事项

什么是 ::?

在C++中,:: 是作用域解析操作符(Scope Resolution Operator)。它的作用是告诉编译器某个标识符(变量、函数、类、枚举等)属于哪个作用域。C++中有很多作用域(比如全局作用域、类作用域、命名空间作用域等),当名字冲突或者需要明确指定时,:: 就派上用场了。

简单来说,:: 是用来“指路”的,帮助编译器找到正确的定义或声明。

基本语法

  • 作用域::标识符:表示“标识符”属于“作用域”。

  • 如果前面没有作用域(即直接写 ::标识符),则表示全局作用域。

主要用途

以下是 :: 的几种常见用法,我会逐一解释并举例。

1. 访问全局作用域

当局部作用域和全局作用域中有同名变量时,:: 可以用来明确访问全局作用域的变量。

#include <iostream>int x = 100; // 全局变量int main() {int x = 50; // 局部变量std::cout << x << std::endl;      // 输出 50(局部变量)std::cout << ::x << std::endl;    // 输出 100(全局变量)return 0;
}
  • ::x:这里的 :: 表示全局作用域,告诉编译器去找全局的 x,而不是局部的 x。

2. 访问类的静态成员

类的静态成员(static 变量或函数)属于类本身,而不是某个对象实例。访问它们时需要用 类名::。

#include <iostream>class MyClass {
public:static int count; // 静态成员变量声明static void PrintCount() { // 静态成员函数std::cout << "Count: " << count << std::endl;}
};// 类外定义静态成员变量
int MyClass::count = 0;int main() {MyClass::count = 42;       // 设置静态变量MyClass::PrintCount();     // 调用静态函数,输出 "Count: 42"return 0;
}
  • MyClass::count:表示 count 是 MyClass 类中的静态成员。

  • MyClass::PrintCount():表示调用 MyClass 类的静态函数。

3. 访问命名空间中的内容

C++中的命名空间(namespace)用来组织代码,避免命名冲突。使用 :: 可以访问命名空间中的变量、函数等。

#include <iostream>namespace Space {int value = 123;void SayHello() {std::cout << "Hello from Space!" << std::endl;}
}int main() {std::cout << Space::value << std::endl;  // 输出 123Space::SayHello();                       // 输出 "Hello from Space!"return 0;
}
  • Space::value:表示 value 在 Space 命名空间中。

  • Space::SayHello():调用 Space 命名空间中的函数。

4. 区分嵌套作用域

当有嵌套类或嵌套命名空间时,:: 可以用来一层一层指定作用域。

#include <iostream>namespace Outer {namespace Inner {int number = 999;}
}int main() {std::cout << Outer::Inner::number << std::endl; // 输出 999return 0;
}
  • Outer::Inner::number:从外层命名空间 Outer 到内层 Inner,再访问 number。

5. 在类中定义成员函数

在类外定义类的成员函数时(尤其是静态成员或普通成员),需要用 :: 指定函数所属的类。

#include <iostream>class Example {
public:void SaySomething(); // 声明
};// 类外定义
void Example::SaySomething() {std::cout << "Something!" << std::endl;
}int main() {Example ex;ex.SaySomething(); // 输出 "Something!"return 0;
}

Example::SaySomething:表示这个函数是 Example 类的成员。 

注意事项

  1. 不能随便用:

    • :: 只能用于已经定义的作用域。如果作用域或标识符不存在,编译器会报错。

    • 例如:Fake::x 会出错,除非 Fake 是个有效的类或命名空间。

  2. 全局作用域的特殊用法:

    • 单独写 ::(后面跟标识符)时,总是指向全局作用域。如果全局作用域没有这个标识符,也会报错。

  3. 与 using 的关系:

    • 如果用了 using namespace,可以省略 ::,但这可能导致命名冲突,所以大型项目中通常更倾向于显式使用 ::。

    • 例如:std::cout 比 using namespace std; cout 更明确。

相关文章:

c++ 作用域解析操作符::

目录 什么是 ::&#xff1f; 基本语法 主要用途 1. 访问全局作用域 2. 访问类的静态成员 3. 访问命名空间中的内容 4. 区分嵌套作用域 5. 在类中定义成员函数 注意事项 什么是 ::&#xff1f; 在C中&#xff0c;:: 是作用域解析操作符&#xff08;Scope Resolution O…...

JavaScript数据类型转换

在JavaScript编程中&#xff0c;由于其动态类型特性&#xff0c;经常需要在不同的数据类型之间进行转换。正确地执行类型转换不仅能够避免潜在的错误&#xff0c;还能提高代码的灵活性和可维护性。本文将探讨JavaScript中的常见数据类型转换方法&#xff0c;并提供一些实用的例…...

css错峰布局/瀑布流样式(类似于快手样式)

当样式一侧比较高的时候会自动换行&#xff0c;尽量保持高度大概一致&#xff0c; 例&#xff1a; 一侧元素为5&#xff0c;另一侧元素为6 当为5的一侧过于高的时候&#xff0c;可能会变为4/7分部dom节点 如果不需要这样的话删除样式 flex-flow:column wrap; 设置父级dom样…...

AI 技术 引入 RTK(实时动态定位)系统,可以实现智能化管理和自动化运行

将 AI 技术 引入 RTK(实时动态定位)系统,可以实现智能化管理和自动化运行,从而提高系统的精度、效率和可靠性。以下是 AI 技术在 RTK 系统中的应用实例: 一、AI 技术在 RTK 系统中的应用场景 1. 整周模糊度快速解算 问题:RTK 的核心是解算载波相位的整周模糊度,传统方法…...

【STM32F103ZET6——库函数】11.捕获红外信号

目录 红外原理 数据码 引导码 连发码 配置捕获引脚 使能引脚时钟 配置定时器 使能定时器时钟 配置输入捕获 中断优先级分组 配置定时器4中断 定时器中断使能 使能定时器 重写定时器中断服务函数 清空定时器中断标志位 例程 例程说明 main.h main.c HongWai…...

江科大51单片机笔记【9】DS1302实时时钟(上)

一、DS1302介绍 DS1302是由美国DALLAS公司推出的具有涓细电流充电能力的低功耗实时时钟芯片。它可以对年、月、日、周、时、分、秒进行计时&#xff0c;且具有闰年补偿等多种功能。RTC&#xff08;Real Time Clock&#xff09;&#xff1a;实时时钟&#xff0c;是一种集成电路…...

在Spring Boot + MyBatis中优雅处理多表数据清洗:基于XML的配置化方案

问题背景 在实际业务中&#xff0c;我们常会遇到数据冗余问题。例如&#xff0c;一个公司表&#xff08;sys_company&#xff09;中存在多条相同公司名的记录&#xff0c;但只有一条有效&#xff08;del_flag0&#xff09;&#xff0c;其余需要删除。删除前需将关联表&#xf…...

【计网】网络层

网络层 4.1 网络层提供的两种服务&#xff08;一&#xff09; 面向连接的虚电路服务&#xff08;二&#xff09; 无连接的数据报服务 4.2 IPv44.2.1 IPv4概述4.2.2 分类编址的IPv4地址4.2.3 划分子网的IPv4地址4.2.4 无分类编址的IPv4地址4.2.5 IPv4地址的应用规划&#xff08;…...

稳定性保障-前端

前端稳定性保障是确保应用在各种环境下都能 高效、稳定、无错误 运行的策略和方法。可以从 监控、测试、容灾、优化 等方面进行保障。 &#x1f4cc; 1. 监控 & 报警 实时监控 线上情况&#xff0c;及时发现问题。 ✅ 1.1 前端错误监控 • Sentry、Fundebug&#xff1a…...

批量给 Word 中的所有图片添加水印

如果要给一个 Word 文档加水印&#xff0c;很多小伙伴都能轻松的完成&#xff0c;因为使用 Office 就能轻松的操作&#xff0c;并且也有很多第三方的工具可以帮我们实现。那假如需要给 Word 中的每一张图片都添加上水印&#xff0c;那有什么比较好的方法实现呢&#xff1f;今天…...

jQuery UI 简介

jQuery UI 简介 引言 随着互联网技术的飞速发展,前端开发已经成为网站和应用程序建设的重要组成部分。jQuery UI 是一个基于 jQuery 的用户界面库,它为开发者提供了丰富的交互组件和视觉效果,使得创建具有吸引力和互动性的网页变得更加简单。本文将为您详细介绍 jQuery UI…...

`label` 标签的 `for` 属性详解

一、基本概念 label 标签的 for 属性用于将标签与表单控件&#xff08;如 input、select 等&#xff09;绑定&#xff0c;其值需与目标元素的 id 完全匹配。这种关联允许用户点击标签时触发控件交互&#xff08;如聚焦输入框或切换复选框&#xff09;&#xff0c;提升操作便捷…...

ArcGIS操作:10 投影坐标系转地理坐标系

应用情景&#xff1a;在计算shp面质心坐标的时&#xff0c;由于需要的坐标是经纬度&#xff0c;所以需要将投影坐标系转化为地理坐标系 1、打开工具箱 2、右侧&#xff1a;数据管理工具 → 投影和变换 → 要素 → 投影 3、选择投影的数据、输出路径、地理坐标系&#xff0c;点…...

【单片机通信技术】串口通信的几种方式与比较,详细解释SPI通信

一、介绍 串口通信是一种通过串行接口逐位传输数据的通信方式&#xff0c;广泛应用于嵌入式系统、工业控制、传感器网络等领域。 二、以下是几种常见的串口通信方式及其对比&#xff1a; 1.UART&#xff08;Universal Asynchronous Receiver/Transmitter&#xff09; 特点&am…...

DeepSeek开源Day5:3FSsmallpond技术详解

2 月 24 日&#xff0c;DeepSeek 启动 “开源周”&#xff0c;第四个开源的代码库为 3FS&smallpond&#xff08;又是一下发布了两个&#xff09;。 3FS&#xff08;Fire-Flyer File System&#xff09;是 DeepSeek 内部开发的一款高性能分布式文件系统&#xff0c;旨在为 A…...

常见的限流算法有哪些

计数器算法 原理&#xff1a;在固定的时间窗口内&#xff0c;对请求进行计数&#xff0c;当请求数量达到设定的阈值时&#xff0c;就开始限流&#xff0c;拒绝多余的请求。例如&#xff0c;设定 1 分钟的时间窗口内允许最多 100 个请求&#xff0c;那么在这 1 分钟内每来一个请…...

Android 低功率蓝牙之BluetoothGattCallback回调方法详解

BluetoothGattCallback 是 Android 中用于处理蓝牙低功耗&#xff08;BLE&#xff09;设备通信的核心回调类。它负责处理与 BLE 设备的连接、服务发现、数据读写等操作的结果。以下是对 BluetoothGattCallback 的详细解析&#xff1a; 1. onConnectionStateChange 触发时机&am…...

socket.io协议内容详解

Socket.IO 是一个基于事件的实时通信库,支持双向通信。它并非单一协议,而是结合了 Engine.IO 传输层和 Socket.IO 应用层协议的复合体系。以下是其协议核心内容的详细解析: 1. 协议分层 Engine.IO:负责底层传输(如 WebSocket、HTTP 长轮询),处理连接稳定性、心跳和断线重…...

在Oracle中编写雪花算法升学雪花ID

雪花算法的定义不详细说了哈&#xff0c;直接给出代码&#xff01; --雪花配置 --DROP TABLE SNOWFLAKE_CONFIG; CREATE TABLE SNOWFLAKE_CONFIG ( DATA_CENTER_ID NUMBER(5) NOT NULL, WORKER_ID NUMBER(5) NOT NULL, LAST_TIMESTAMP NUMBER(20) NOT NULL, SEQUENCE NUMBE…...

我们来学nginx -- 优化下游响应速度

优化下游响应速度 题记启用 Gzip 压缩优化缓冲区设置设置超时时间 题记 专家给出的配置文件真是…&#xff0c;信息量有点大啊&#xff01; nginx&#xff1a;我只想作为一个简单的代理专家爸爸&#xff1a;都是为了你好&#xff01; 这样&#xff0c;先从有关响应速度的角度&…...

SELECT ... FOR UPDATE 加锁后,其他线程能读取数据吗

在执行 SELECT * FROM table WHERE ... FOR UPDATE 语句时&#xff0c;MySQL 会对查询结果集中的行加 排他锁&#xff08;X锁&#xff09;。这种锁的行为会影响其他事务对这些行的读写操作。以下是具体的影响&#xff1a; 1. 加锁后的效果 当前事务&#xff1a; 对查询结果集中…...

【论文阅读】多模态——LSeg

文献基本信息 标题&#xff1a;Language-Driven Semantic Segmentation作者&#xff1a;Boyi Li、Kilian Q. Weinberger、Serge Belongie、Vladlen Koltun、Ren Ranftl单位&#xff1a;Cornell University、University of Copenhagen、Apple、Intel Labs会议/期刊&#xff1a;…...

GBT32960 协议编解码器的设计与实现

GBT32960 协议编解码器的设计与实现 引言 在车联网领域&#xff0c;GBT32960 是一个重要的国家标准协议&#xff0c;用于新能源汽车与监控平台之间的数据交互。本文将详细介绍如何使用 Rust 实现一个高效可靠的 GBT32960 协议编解码器。 整体架构 编解码器的核心由三个主要组…...

Tomcat之 配置https协议即SSL证书

太难了&#xff0c;Tomcat7服务器配置Https协议的SSL证书&#xff0c;半天没搞定啊 切换&#xff0c;Tomcat8 分分钟 参考 https://blog.csdn.net/u014553029/article/details/86672342 https://blog.csdn.net/qq_37138756/article/details/103516627 https://blog.csdn.net/r…...

如何将飞书多维表格与DeepSeek R1结合使用:效率提升的完美搭档

将飞书的多维表格与DeepSeek R1结合使用&#xff0c;就像为你的数据管理和分析之旅装上一台涡轮增压器。两者的合作&#xff0c;不仅仅在速度上让人耳目一新&#xff0c;更是将智能化分析带入了日常的工作场景。以下是它们如何相辅相成并改变我们工作方式的一些分享。 --- 在…...

JPA编程,去重查询ES索引中的字段,对已有数据的去重过滤,而非全部字典数据

一、背景 课程管理界面&#xff0c;查询前&#xff0c;需要把查询元数据给出。 学科列表、学段列表和分类列表&#xff0c;我们把它定义为查询元数据。 一般的业务需求是&#xff1a; 系统维护好多个字典&#xff0c;比如学科、学段等等&#xff0c;相当于属性库。 但是&…...

Kubermetes 部署mysql pod

步骤 1: 创建 PersistentVolume 和 PersistentVolumeClaim 首先为 MySQL 创建一个 PersistentVolume (PV) 和 PersistentVolumeClaim (PVC) 来确保数据的持久性。 mysql-pv.yaml&#xff1a; apiVersion: v1 kind: PersistentVolume metadata:name: mysql-pv-volume spec:cap…...

自定义wordpress三级导航菜单代码

首先&#xff0c;在你的主题functions.php文件中&#xff0c;添加以下代码以注册一个新的菜单位置&#xff1a; function mytheme_register_menus() {register_nav_menus(array(primary-menu > __(Primary Menu, mytheme))); } add_action(init, mytheme_register_menus); …...

剑指 Offer II 060. 出现频率最高的 k 个数字

comments: true edit_url: https://github.com/doocs/leetcode/edit/main/lcof2/%E5%89%91%E6%8C%87%20Offer%20II%20060.%20%E5%87%BA%E7%8E%B0%E9%A2%91%E7%8E%87%E6%9C%80%E9%AB%98%E7%9A%84%20k%20%E4%B8%AA%E6%95%B0%E5%AD%97/README.md 剑指 Offer II 060. 出现频率最高的…...

SQL Server数据库中用存储过程来取顺序号

SQL Server数据库中用存储过程来取顺序号 表sys_number&#xff0c;字段name字符&#xff0c;表示前缀,value数字&#xff0c;一个一个递增 存储过程代码&#xff1a; SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO ALTER procedure [dbo].[usp_GetSysid]name varchar(5…...

JS—组成:2分钟掌握什么是ECMAScript操作,什么是DOM操作,什么是BOM操作

个人博客&#xff1a;haichenyi.com。感谢关注 1. 目录 1–目录2–组成3–内置对象 2. 组成 一直都在说JS&#xff0c;JS&#xff0c;到底啥是JS有了解过吗&#xff1f;JS由哪几部分组成的呢&#xff1f; 定义&#xff1a; JavaScript是一种轻量级、解释型或即时编译型的编程语…...

如何使用 Ollama 的 API 来生成聊天

如何使用 Ollama 的 API 来生成聊天 简介 生成聊天 生成聊天的示例 加载模型 卸载模型 简介 Ollama 提供了一个 RESTful API&#xff0c;允许开发者通过 HTTP 请求与 Ollama 服务进行交互。这个 API 覆盖了所有 Ollama 的核心功能&#xff0c;包括模型管理、运行和监控。本…...

Jenkins学习笔记

文章目录 一、Jenkins简介二、Jenkins的安装1. 安装前准备2. 安装Jenkins3. 启动Jenkins 三、Jenkins的配置1. 初始配置2. 全局工具配置3. 插件安装 四、Jenkins的使用1. 创建新任务2. 配置任务3. 触发构建4. 查看构建结果 五、Jenkins的高级功能1. 分布式构建2. 流水线&#x…...

公开笔记:自然语言处理(NLP)中文文本预处理主流方法

在自然语言处理&#xff08;NLP&#xff09;领域&#xff0c;将中文文本转化为数字的主流方法主要集中在预训练语言模型和子词编码技术上。这些方法能够更好地捕捉语义信息&#xff0c;并且在各种NLP任务中表现出色。以下是目前主流的文本编码方法&#xff1a; 1. 基于预训练语…...

第5章 使用OSSEC进行监控(网络安全防御实战--蓝军武器库)

网络安全防御实战--蓝军武器库是2020年出版的&#xff0c;已经过去3年时间了&#xff0c;最近利用闲暇时间&#xff0c;抓紧吸收&#xff0c;总的来说&#xff0c;第5章开始进入主机安全&#xff08;HIDS&#xff09;领域了&#xff0c;2022年的时候有幸做过终端安全一段时间&a…...

计算机毕业设计SpringBoot+Vue.js电商平台(源码+文档+PPT+讲解)

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…...

【音视频】ffplay简单过滤器

一、ffplay简单过滤器 视频旋转&#xff1a;借助transpose滤镜 ffplay -i 1.mp4 -vf transpose1这里选择不同的数字是不同的方向&#xff1a; 视频翻转&#xff1a;借助hflip/vflip实现水平和垂直翻转&#xff1a; 水平翻转 ffplay 1.mp4 -vf hflip垂直翻转 ffplay 1.mp4 …...

大白话html第十一章

大白话html第十一章 在网页开发的第十一章&#xff0c;会涉及到很多前沿且复杂的技术和概念&#xff0c;主要聚焦于性能极致优化、前沿交互技术以及与人工智能的融合等方面。 1. 极致性能优化 概念 这就好比给一辆赛车进行全方位的精细调校&#xff0c;让它跑得又快又稳。在…...

基于websocket搭建聊天室

基于websocket搭建聊天室 1.后端配置 1.依赖一个web一个websocket <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.spr…...

Metal学习笔记十一:贴图和材质

在上一章中&#xff0c;您设置了一个简单的 Phong 光照模型。近年来&#xff0c;研究人员在基于物理的渲染 &#xff08;PBR&#xff09; 方面取得了长足的进步。PBR 尝试准确表示真实世界的着色&#xff0c;真实世界中离开表面的光量小于表面接收的光量。在现实世界中&#xf…...

STM32-USART串口数据包

一&#xff1a;HEX数据包发送 1.为了收发数据包&#xff0c;先定义两个缓存区的数组 &#xff0c;这4个数据只存储发送或者接收的载荷数据&#xff0c;包头和包尾不存 uint8_t Serial_TxPacket[4]; uint8_t Serial_RxPacket[4]; uint8_t Serial_RxFlag;//接收一个数据包就置F…...

【LeetCode 热题 100】438. 找到字符串中所有字母异位词 | python 【中等】

继续学&#xff01;嗨起来&#xff01;&#xff01;&#xff01;&#xff08;正确率已经下30%了&#xff0c;我在干什么&#xff09; 题目&#xff1a; 438. 找到字符串中所有字母异位词 给定两个字符串 s 和 p&#xff0c;找到 s 中所有 p 的子串&#xff0c;返回这些子串的…...

Ollama+Deepseek-R1+AnythingLLM本地个人知识库搭建

一、OllamaDeepseek-R1AnythingLLM本地个人知识库搭建 在搭建强大的本地个人知识库以及提升开发效率的技术体系中&#xff0c;Ollama、DeepSeek-R1 和 AnythingLLM 扮演着举足轻重的角色。Ollama 作为模型运行与管理工具&#xff0c;是整个技术架构中的关键枢纽&#xff0c;负…...

决策树(Decision Tree)基础知识

目录 一、回忆1、*机器学习的三要素&#xff1a;1&#xff09;*函数族2&#xff09;*目标函数2.1&#xff09;*模型的其他复杂度参数 3&#xff09;*优化算法 2、*前处理/后处理1&#xff09;前处理&#xff1a;特征工程2&#xff09;后处理&#xff1a;模型选择和模型评估 3、…...

跨域-告别CORS烦恼

跨域-告别CORS烦恼 文章目录 跨域-告别CORS烦恼[toc]1-参考网址2-思路整理1-核心问题2-个人思考3-脑洞打开4-个人思考-修正版1-个人思考2-脑洞打开 3-知识整理1-什么是跨域一、同源策略简介什么是源什么是同源是否是同源的判断哪些操作不受同源策略限制跨域如何跨域 二、CORS 简…...

浅论数据库聚合:合理使用LambdaQueryWrapper和XML

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、数据库聚合替代内存计算&#xff08;关键优化&#xff09;二、批量处理优化四、区域特殊处理解耦五、防御性编程增强 前言 技术认知点&#xff1a;使用 XM…...

css实现元素垂直居中显示的7种方式

文章目录 * [【一】知道居中元素的宽高](https://blog.csdn.net/weixin_41305441/article/details/89886846#_1) [absolute 负margin](https://blog.csdn.net/weixin_41305441/article/details/89886846#absolute__margin_2) [absolute margin auto](https://blog.csdn.net…...

Nerf流程

一.数据处理&#xff1a; 在输入数据时&#xff0c;并没有给出相机的内参与外参&#xff0c;需要在数据处理得出相机的内外惨数&#xff0c;作者使用COLMAP得到相机参数后&#xff0c;转成NeRF可以读取的格式即可以用于模型训练。 旋转矩阵的第一列到第三列分别表示了相机坐标系…...

Spring Cloud Alibaba学习 5- Seata入门使用

Spring Cloud Alibaba学习 5- Seata入门使用 Seata是Spring Cloud Alibaba中用于分布式事务管理的解决方案 一. Seata的基本概念 1. Seata的三大角色 1> TC (Transaction Coordinator) - 事务协调者 维护全局和分支事务的状态&#xff0c;驱动全局事务提交或回滚。TC作…...

Select 下拉菜单选项分组

使用<select>元素创建下拉菜单&#xff0c;并使用 <optgroup> 元素对选项进行分组。<optgroup> 元素允许你将相关的 <option> 元素分组在一起&#xff0c;并为每个分组添加一个标签。 <form action"#" method"post"><la…...