【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

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

相关推荐
Дерек的学习记录4 小时前
Unreal Engine 5:第三人称运动系统和人物动画
开发语言·学习·ue5
雷✘5 小时前
C++ 类与对象的初始化机制、成员访问边界与拷贝优化
java·网络·c++
Ramble_Naylor5 小时前
Rust深度解读:异步流(Async Streams)与生成器的处理艺术
开发语言·后端·rust
努力实干5 小时前
简单工厂模式(Simple Factory Pattern)——C++
开发语言·c++·简单工厂模式
熊猫钓鱼>_>5 小时前
平行视界兼容模式与魔法变量配置避坑【鸿蒙心迹】
运维·服务器·开发语言·笔记·华为·harmonyos·openharmony
大鹏说大话5 小时前
PHP 大文件上传解决方案:分片上传完整思路
开发语言·php
Wang's Blog6 小时前
Java 项目实战:交友项目 - 我的访客:需求说明
java·开发语言·交友
東隅已逝,桑榆非晚6 小时前
算法2. 双指针法-复写零
c++·笔记·学习·算法
布莱克6056 小时前
C++ 中堆和栈的区别详解
开发语言·c++·栈·堆
像风一样自由20206 小时前
3.Dockerfile如何构建一个Python算法镜像
开发语言·人工智能·python·大模型