运算符在计算机语言中的作用,深入解析C++编程中范围解析运算符的作用及使用...

范围解析运算符 :: 用于标识和消除在不同范围内使用的标识符。

语法

:: identifier class-name :: identifier namespace :: identifier enum class :: identifier enum struct :: identifier

备注identifier 可以是变量、函数或枚举值。

具有命名空间和类以下示例显示范围解析运算符如何与命名空间和类一起使用:

namespace NamespaceA{

int x;

class ClassA {

public:

int x;

};

}

int main() {

// A namespace name used to disambiguate

NamespaceA::x = 1;

// A class name used to disambiguate

NamespaceA::ClassA a1;

a1.x = 2;

}

没有范围限定符的范围解析运算符表示全局命名空间。

namespace NamespaceA{

int x;

}

int x;

int main() {

int x;

// the x in main()

x = 0;

// The x in the global namespace

::x = 1;

// The x in the A namespace

NamespaceA::x = 2;

}

你可以使用范围解析运算符来标识命名空间的成员,还可标识通过 using 指定成员的命名空间的命名空间。在下面的示例中,你可以使用 NamespaceC 限定 ClassB(尽管 ClassB 已在 NamespaceB 中声明),因为已通过 using 指令在 NamespaceC 中指定 NamespaceB。

namespace NamespaceB {

class ClassB {

public:

int x;

};

}

namespace NamespaceC{

using namespace B;

}

int main() {

NamespaceB::ClassB c_b;

NamespaceC::ClassB c_c;

c_b.x = 3;

c_c.x = 4;

}

可使用范围解析运算符链。在以下示例中,NamespaceD::NamespaceD1 将标识嵌套的命名空间 NamespaceD1,并且 NamespaceE::ClassE::ClassE1 将标识嵌套的类 ClassE1。

namespace NamespaceD{

namespace NamespaceD1{

int x;

}

}

namespace NamespaceE{

class ClassE{

public:

class ClassE1{

public:

int x;

};

};

}

int main() {

NamespaceD:: NamespaceD1::x = 6;

NamespaceE::ClassE::ClassE1 e1;

e1.x = 7 ;

}

具有静态成员必须使用范围解析运算符来调用类的静态成员。

class ClassG {

public:

static int get_x() { return x;}

static int x;

};

int ClassG::x = 6;

int main() {

int gx1 = ClassG::x;

int gx2 = ClassG::get_x();

}

具有区分范围的枚举区分范围的解析运算符还可以与区分范围的枚举枚举声明的值一起使用,如下例所示:

enum class EnumA{

First,

Second,

Third

};

int main() {

EnumA enum_value = EnumA::First;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值