C++类使用双冒号的方法

10

我正在学习C++。现在我还不完全理解这段代码的作用。

Some_Class::Some_Class {
    etc...
}

我想要自己进行一些研究,但是不确定从何开始或者应该搜索什么关键词。希望能够得到帮助。


1
http://en.wikipedia.org/wiki/Scope_resolution_operator - Son-Huy Pham
3
"::" 是作用域解析运算符 - 它表示 "SomeClass" 方法在 "Some_Class" 中。 - Shf
3
你需要一本关于C++的好入门书籍。点击这里 https://dev59.com/_3RC5IYBdhLWcg3wK9yV 可以找到更多信息。 - Johan Råde
@user2444217:为什么第一部分和第二部分不同?Some_ClassSomeClass。这是打字错误吗?如果是,那么您发布的是一个毫无意义的标记序列。如果它包括参数声明,它可以是构造函数声明。或者如果它包括class/struct关键字,它可以是嵌套类定义。但是现在,它完全没有意义。请澄清您的问题。 - AnT stands with Russia
3个回答

13

由于您张贴的“代码”无效且含混不清,因此无法确定它是什么。

  • 这可能是以类嵌套方式定义的嵌套类。当您定义嵌套类时,可以立即在内部定义内部类,就像这样:

  • class Some_Class {   // <- definition of the outer class
      ...
      class SomeClass {  // <- definition of the inner class
        ...
      };
      ...
    };
    

    或者,如果你更喜欢,你可以只在内部进行嵌套类的声明,并将实际的定义移动到外部

    class Some_Class {   // <- definition of the outer class
      ...
      class SomeClass;   // <- declaration of the inner class
      ...
    }; 
    
    class Some_Class::SomeClass { // <- definition of the inner class
      ...
    };
    

    然而,为了这样做它必须以class/struct开始,而在您发布的内容中不存在。

  • 或者它可能是Some_Class类的成员函数SomeClass的定义。

  • class Some_Class {
      ...
      void SomeClass(int i);          // <- declaration of member function
      ...
    };
    
    void Some_Class::SomeClass(int i) // <- definition of member function
    {
      ...
    }
    

    但是为此它必须包括返回类型和参数列表。

  • 或者它可以是带有{}括起来的初始化程序的静态成员的定义。

    class Some_Class {
      ...
      static int SomeClass;
      ...
    };
    
    int Some_Class::SomeClass { 42 };
    

    但是为此它必须包括静态成员的类型。

换句话说,无法确定您发布的内容以及您的问题的实际关键点。


这可能是一个带有初始化的静态成员的定义。虽然可能不是意图。 - aschepler
哎呀,不行。那需要一个类型。 - aschepler
从来没有想过这是定义内部类的正确方式。谢谢。 - Kairat Kempirbaev

6

:: 解析类或命名空间。

例如:

namespace test1 { int i = 0; }
cout << test1::i << endl;

或者

class test2 { 
     public: 
     static int i = 0; 
 };
 // after in
cout << test2::i << endl;

你也可以添加这个:
using namespace test1;
cout << i << endl;

喜欢你简单明了的方法,还有许多反例。谢谢。 - Henrique de Sousa

3
你对作用域解析运算符感到困惑(感谢@Huytard提供的链接)
::是作用域解析运算符,意味着SomeClass方法在Some_Class中,根据你的例子-Some_Class::SomeClass

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接