【QT】C++单冒号‘:’和双冒号‘::’的大白话讲解

在C++编程中,双冒号 (::) 和单冒号 (:) 是 各自有不同的用途。

双冒号 ::

双冒号在C++中被称为"作用域解析运算符"(Scope Resolution Operator),主要用于以下几种情况:

  1. 全局作用域

    cpp 复制代码
    int x = 10;
    
    void foo() {
        int x = 20;
        std::cout << ::x << std::endl; // 输出全局变量x的值,结果是10
    }

    在这个例子中,::x表示全局变量x,即使在foo函数中存在局部变量x

  2. 类的静态成员

    cpp 复制代码
    class MyClass {
    public:
        static int staticVar;
    };
    
    int MyClass::staticVar = 100; // 使用作用域解析运算符定义类的静态成员变量

    在这里,MyClass::staticVar用于定义和访问类MyClass的静态成员变量。

  3. 命名空间

    cpp 复制代码
    namespace MyNamespace {
        int var = 30;
    }
    
    int main() {
        std::cout << MyNamespace::var << std::endl; // 访问命名空间内的变量,结果是30
    }

    使用MyNamespace::var可以访问命名空间MyNamespace中的变量var

单冒号 :

单冒号在C++中有多种用途,主要用于以下几种情况:

  1. 构造函数初始化列表

    cpp 复制代码
    class MyClass {
    public:
        MyClass(int value) : memberVar(value) {}
    private:
        int memberVar;
    };

    在这个例子中,: memberVar(value)用于在构造函数中初始化成员变量memberVar

  2. 继承

    cpp 复制代码
    class Base {
    public:
        void baseFunction() {}
    };
    
    class Derived : public Base {
    public:
        void derivedFunction() {}
    };

    这里,class Derived : public Base表示类Derived继承自类Base

  3. 条件运算符

    cpp 复制代码
    int a = 10;
    int b = 20;
    int max = (a > b) ? a : b; // 如果a大于b,则max等于a,否则max等于b

    ?:一起构成了条件运算符,用于简洁地实现条件判断。

相关推荐
云栖梦泽1 小时前
易语言开发从入门到精通:补充篇·网络编程进阶+实用爬虫开发·API集成·代理IP配置·异步请求·防封禁优化
开发语言
java1234_小锋1 小时前
Java高频面试题:SpringBoot为什么要禁止循环依赖?
java·开发语言·面试
铅笔侠_小龙虾1 小时前
Flutter Demo
开发语言·javascript·flutter
2501_944525541 小时前
Flutter for OpenHarmony 个人理财管理App实战 - 账户详情页面
android·java·开发语言·前端·javascript·flutter
福大大架构师每日一题1 小时前
ComfyUI v0.11.1正式发布:新增开发者专属节点支持、API节点强化、Python 3.14兼容性更新等全方位优化!
开发语言·python
wangdaoyin20101 小时前
若依vue2前后端分离集成flowable
开发语言·前端·javascript
John_ToDebug2 小时前
浏览器内核崩溃深度分析:从 MiniDump 堆栈到 BindOnce UAF 机制(未完待续...)
c++·chrome·windows
向阳开的夏天2 小时前
麒麟V10源码编译QT5.6.3 (x86 & arm64)
开发语言·qt
Evand J2 小时前
【MATLAB例程】TOA和TDOA混合定位,适用于二维平面的高精度定位。锚点数量、位置、测量噪声可自行调节
开发语言·matlab·定位·tdoa
念越3 小时前
数据结构:栈堆
java·开发语言·数据结构