C++:符号的作用1:作用域运算符(::)【::(命名空间、类、结构体作用域限定符)】

本文详细介绍了C++中的作用域运算符::的用途,包括类作用域操作符、作用域成员运算符以及命名空间操作符的使用方法,并通过实例展示了如何在类外部定义成员函数以及如何访问命名空间中的成员。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

::作用域运算符

  • A::B表示作用域A中的-名称B;
  • A可以是命名空间结构体

1、类作用域操作符

“::”:指明了成员函数所属的。如:M::f(s) 就表示函数 f(s) 是类 M 的成员函数。

  • 如果想在类的外部引用静态成员函数,或在类的外部定义成员函数都要用到 “::”
  • 使用命名空间里的类型或函数也要用到 “::”(如:std::cout, std::cin, std::string 等等)

例:声明了一个类A,类A里声明了一个成员函数void f(),但没有在类的声明里给出f的定义,

demo01.h(在头文件demo01.h中声明类A)

// 声明类 A
class A{
public:
    void f();
};

那么在类外定义 f 时, 就要写成 void A::f(){...},表示这个 f() 函数是类A的成员函数。

demo01.cpp(在源文件demo01.cpp中定义类A的成员函数)

void A::f(){
    std::cout<<"hello world"<<std::endl;
}

2、作用域成员运算符

表示引用成员函数及变量

例:System::Math::Sqrt() 相当于System.Math.Sqrt()

3、命名空间操作符

namespace ns1 {
    const double RATE = 0.08; //常量
    double pay;          //变量
    double tax() {      //函数
        return a * RATE;
    }
 
    namespace_ns2 {     //嵌套的命名空间
        int age;
    }
}

如果想输出命名空间nsl中成员的数据,可以采用下面的方法:

cout<<ns1::RATE<<endl;
 
cout<<ns1::pay<<endl;
 
cout<<ns1::tax()<<endl;
 
cout<<ns1::ns2::age<<endl; //需要指定外层的和内层的命名中间名

可以看到命名空间的定义方法使用方法与类差不多。但它们之间有一点差别:

  • 声明类时在右花括号的后面有一分号;
  • 而在定义命名空间时,花括号的后面没有分号;

C++中::和:, .和->的作用和区别? - 知乎

C++中::和:, .和->的作用和区别

C++ 类的继承_Remarkable!的博客-CSDN博客_c++类的继承

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值