2011-10-26 3 views
2

은 .. 내가 인터넷에서 검색하지만 좋은 정보를 얻을 수 class classname :: reference {}C++ : 클래스의 클래스 명 :: 참조 {...} 내가 결코 STL과 학습하지되었다

같은 클래스의이 종류를 보았다

class bitset::reference { 
    friend class bitset; 
    reference();         // no public constructor 
public: 
    ~reference(); 
    operator bool() const;      // convert to bool 
    reference& operator= (bool x);    // assign from bool 
    reference& operator= (const reference& x); // assign from bit 
    reference& flip();       // flip bit value 
    bool operator~() const;      // return inverse value 
}; 
  • 이것은 무엇입니까 :: 여기에 대한 참조?

i는 [여기 링크 설명을 입력합니다] [1] http://www.cplusplus.com/reference/stl/bitset/ 내가 전에 C++에서 일한 여기에이 코드를 보았다.

답변

2

비트 셋 클래스 정의를 살펴 보았습니까? 여기 어딘가에 이런 것이 있습니다 :

funciton의 몸체를 클래스 몸체 외부에 두는 것과 같습니다. 이제 우리는 부모 클래스의 외부 중첩 클래스의 몸을 가하고 있습니다 :

class bitset::reference 
{ 
    /* class body */ 
} 

을 그건 그렇고, 간호원이 실제로 서로 내에 정의 MSVC (C:\Program Files\Microsoft Visual Studio 9.0\VC\include\bitset)에서 :

// TEMPLATE CLASS bitset 
template<size_t _Bits> 
class bitset 
{ // store fixed-length sequence of Boolean elements 
typedef unsigned long _Ty; // base type for a storage word 
enum {digits = _Bits}; // extension: compile-time size() 

public: 
typedef bool element_type; // retained 

    // CLASS reference 
class reference 
    { // proxy for an element 
    friend class bitset<_Bits>; 
    . 
    . 
    . 

는 그것은이다 g ++의 경우 bitset.h과 비슷하지만 좀 더 복잡합니다.

1

참조는 클래스 이름이며, 특별한 것은 없습니다. bitset :: reference는 참조가 내부 클래스임을 의미합니다.

1

당신이 인용 한 조각 앞에 선 권리 설명 :

그런 작은 원소 타입은 대부분의 C++ 환경에서 존재하지 않기 때문에, 각각의 요소는 부울 요소를 모방 특별 참조로 액세스 할 수 있습니다

C++에서는 비트 필드에 대한 참조를 허용하지 않으므로 reference 클래스를 사용하여이를 시뮬레이션합니다.

1

nested class입니다. 기사에서 :

클래스는 다른 클래스의 범위 내에서 선언 될 수 있습니다. 이러한 클래스를 "중첩 클래스"라고합니다. 중첩 클래스는 동봉 클래스의 범위 내에서 으로 간주되며 해당 범위 내에서 을 사용할 수 있습니다. 범위를 벗어나는 범위에서 중첩 클래스를 직접 참조하려면 정규화 된 이름을 사용해야합니다.

다른 해석으로 bitset 클래스는 클래스가 아니라 네임 스페이스로도 사용되고 있습니다.

관련 문제