0
点赞
收藏
分享

微信扫一扫

:: 双冒号_

认真的老去 2022-02-04 阅读 56
c++
//
:: 
01 作用域符 运算符中等级最高 ( 左结合性 )

02 分类
    01 全局 作用域符     eg. ::name
    02 类 作用域符       eg. class::name
    03 命名空间 作用域符  eg. namespace::name

03 作用: 准确调用目标变量

    程序某处调用:
    01  全局变量 a                          ::a; 
    02  class A 的成员变量 a               A::a;
    03  namespace std 的成员 cout     std::cout;
    04  和内置函数重名的自定义函数        ::min();  
            ( 修改函数名也可以解决 )
            ( 这里加上 :: 表示 无论其他地方有无 min 函数 这里只使用我自己定义的 )

04 实例:

    01 处理重名:

        01 类成员重名 A::i; B::i;
        02 变量重名 ( 全局变量和局部变量 )

    02 class A 里面声明了成员函数 int f(); 
            却在 A 外面定义 f() ——> int A::f(); 表示这个 f() 函数 是 class A 的成员

    03 System::Math::Sqrt(); <==> >System.Math.Sqrt();

//

// eg.03.04
#include<bits/stdc++.h>
using namespace std;

int min( int a,int b )
{
    return a<b?a:b;
}

int main()
{
    int a=1,b=2;

    printf("%d\n",::min(a,b));
}
// 可能的输出:

// 1

=====================================

// eg.04.01
#include<bits/stdc++.h>
using namespace std;

int a;

int main()
{
    int a; 

    a=10;   // 局部变量
    ::a=1;  // 全局变量

    printf("%d %d\n",a,::a);

    return 0;
}
// 可能的输出:

// 10 1

=====================================

// eg.04.02
class A
{
    public:
        int i;
        int f( int a );
};

int A::f( int a )
{
    return a+::i;   // 这里的 :: 表示使用 class A 里面的变量 i
}

举报

相关推荐

0 条评论