"ClassName ClassName :: FunctionName"在C++中的含义是什么?

dag*_*sse 0 c++ constructor class

当我读c ++代码时,我一直看到"ClassName ClassName :: FunctionName"形式的代码.例如:

Fraction Fraction:: Reciprocal() {       

    return Fraction(denominator,numerator);
}
Run Code Online (Sandbox Code Playgroud)

在上面Fraction是一个类名,Reciprocal()是在fraction类中声明的函数,并且有一个带有两个参数的构造函数.使用这种格式有什么重要意义?

tem*_*def 6

在C++中,如果在类定义之外实现成员函数,那么您需要指出(除了返回类型和参数类型)您正在编写的函数确实是成员函数.如果你改写了

Fraction Reciprocal() {
    // ...
}
Run Code Online (Sandbox Code Playgroud)

然后C++会解释这个,好像你写了一个名为的自由函数(不是成员函数)Reciprocal.另一方面,写作

Fraction Fraction::Reciprocal() {
    // ..
}
Run Code Online (Sandbox Code Playgroud)

告诉C++你正在实现嵌套的东西Fraction.

::表示法称为范围解析运算符.可以把它想象成文件路径中的/.如果您Fraction将文件夹和Reciprocal成员函数视为该文件夹中的文件,则可以将上述代码视为

Fraction  // returns a Fraction
Fraction::Reciprocal() { // function name is Reciprocal; it's declared inside Fraction
      ...
}
Run Code Online (Sandbox Code Playgroud)