C++中,`::`、`->` 和 `.`

devtools/2024/11/8 0:01:34/

C++中,::->.

在C++中,::->. 是用于访问成员(如变量、函数等)的不同操作符,它们分别用于不同的场景。以下是它们各自的作用和用法:

  1. 双冒号 :: (作用域解析操作符)

    用于指定某个标识符(如变量、函数、类型等)的作用域。这通常用于访问类的静态成员、全局变量、枚举值,或者覆盖基类中被隐藏的成员。此外,:: 也用于命名空间中的名称解析。

    • 访问静态成员:

      class MyClass {
      public:static int staticVar;
      };int MyClass::staticVar = 10;  // 使用作用域解析操作符访问静态成员
      
    • 访问全局变量(避免与局部变量名冲突):

      int globalVar = 10;void func() {int localVar = 5;std::cout << ::globalVar << std::endl;  // 使用作用域解析操作符访问全局变量
      }
      
    • 命名空间中的名称解析:

      namespace ns {int var = 10;
      }int main() {std::cout << ns::var << std::endl;  // 使用作用域解析操作符访问命名空间中的变量return 0;
      }
      
  2. 箭头 -> (成员访问操作符,用于指针)

    用于通过对象的指针访问其成员。当你有一个指向对象的指针时,需要使用 -> 来访问该对象的成员。

    • 通过指针访问成员变量和成员函数:
      class MyClass {
      public:int var;void func() { std::cout << "Hello" << std::endl; }
      };int main() {MyClass* ptr = new MyClass();ptr->var = 10;  // 使用箭头操作符访问成员变量ptr->func();   // 使用箭头操作符调用成员函数delete ptr;return 0;
      }
      
  3. . (成员访问操作符,用于对象)

    用于直接通过对象访问其成员。当你有一个对象实例时,使用 . 来访问该对象的成员。

    • 通过对象访问成员变量和成员函数:
      class MyClass {
      public:int var;void func() { std::cout << "Hello" << std::endl; }
      };int main() {MyClass obj;obj.var = 10;  // 使用点操作符访问成员变量obj.func();   // 使用点操作符调用成员函数return 0;
      }
      

总结:

  • :: 用于指定作用域,通常用于访问静态成员、全局变量和命名空间中的名称。
  • -> 用于通过对象的指针访问成员。
  • . 用于直接通过对象访问成员。

http://www.ppmy.cn/devtools/132156.html

相关文章

Android和iOS有什么区别?

Android 和 iOS 有以下区别&#xff1a; 开发者与所属公司&#xff1a; Android&#xff1a;由谷歌公司开发以及开放手机联盟维护。它是基于 Linux 内核和其他开源软件的修改版本&#xff0c;代码开源程度较高&#xff0c;许多厂商都可以基于 Android 源代码进行深度定制和开发…

Redis - String 字符串

一、基本认识 字符串类型是Redis最基础的数据类型&#xff0c;关于字符串需要特别注意&#xff1a; Redis中所有的键的 类型都是字符串类型&#xff0c;⽽且其他⼏种数据结构也都是在字符串类似基础上构建的&#xff0c;例如列表和集合的 元素类型是字符串类型&#xff0c;所…

Vue2 与 Vue3 的区别

Vue.js 作为流行的前端框架&#xff0c;已经经历了多次版本的更新迭代&#xff0c;从 Vue2 到 Vue3 的转变不仅带来了新的功能&#xff0c;也在性能、开发体验等方面作出了显著改进。无论是对于新手还是有经验的开发者&#xff0c;了解这两个版本之间的差异都至关重要。本文将讨…

OpenHarmony 入门——ArkUI 自定义组件间的父子双向同步状态装饰器@Link语法(四)

文章大纲 引言一、组件间状态装饰器Link 父子双向同步1、使用规则2、支持的观察变化的场景和ArkUI 刷新UI3、Link变量值初始化和更新机制3.1、初始渲染&#xff1a;执行父组件的build()函数后将创建子组件的新实例。3.2、Link的数据源的更新&#xff1a;即父组件中状态变量更新…

前沿快报|泛基因组在动植物研究中最新进展

上期&#xff0c;我们对泛基因组的起源发展、分析方法、重点关注研究内容等进行了介绍&#xff08;如何认识泛基因组&#xff1f;从单一到多元&#xff1f;&#xff09;&#xff0c;本期将继续关注泛基因组分析&#xff0c;从研究思路以及分析内容角度出发&#xff0c;小编整理…

Oracle 迁移到 OB 过程中的函数改造案例

作者&#xff1a;杨敬博&#xff0c;爱可生 DBA 团队成员&#xff0c;一位会摄影、会铲屎、会打球、会骑车、生活可以自理的 DBA。 审校及补充&#xff1a;胡呈清&#xff0c;官永强&#xff0c;程柳润。 爱可生开源社区出品&#xff0c;原创内容未经授权不得随意使用&#xff…

大语言模型(LLM)入门级选手初学教程 III

指令微调 一、指令数据的构建 包括任务描述&#xff08;也称为指令&#xff09;、任务输入-任务输出以及可选的示例。 Self-Instruct 指令数据生成&#xff1a;从任务池中随机选取少量指令数据作为示例&#xff0c;并针对Chat-GPT 设计精细指令来提示模型生成新的微调数据…

刚接收就被On Hold了,我的SCI还有救吗?

【SciencePub学术】On Hold状态是科睿唯安划分的一种风险期刊的类型&#xff0c;以往总是觉得影响因子低的或者新收录的期刊会发生这种情况&#xff0c;但是2024年以来很多被On Hold的期刊都是属于TOP级别的。再次刷新了我们的认知&#xff01; 那我们如果不幸投稿到了On Hold期…