C ++에서 “class :”는 무엇을 의미합니까? 매우 혼란 스러웠습니다. 누구든지 제발 알아낼

전에 본 적이 없습니다. “:: sample”의 오타라고 생각했지만 실제로 컴파일되는 것을 보았을 때 매우 혼란 스러웠습니다. 누구든지 제발 알아낼 수 있습니까? 나는 그것이 goto레이블 이라고 생각하지 않습니다 .

void f() {
  class: sample {
    // there were some members declared here
  } x;
}


답변

이름이 지정되지 않은 클래스이며 콜론은 sample. 처럼 봐

class Foo : private sample
{
    // ...
};

Foo x;

답변

나는 그것이 에서 파생 되는 명명되지 않은 클래스를 정의 하고 있다고 생각합니다 sample. 그리고 x이름이 지정되지 않은 클래스의 변수입니다.

struct sample{ int i;};

sample f()
{
  struct : sample
  {
    // there were some members declared here
  } x;
  x.i = 10;
  return x;
}
int main()
{
        sample s = f();
        cout << s.i << endl;
        return 0;
}

ideone의 샘플 코드 : http://www.ideone.com/6Mj8x

PS : 접근성 classstruct위해로 변경 했습니다 !


답변

이름없는 클래스입니다.

예를 들어 C ++ 11 이전의 로컬 함수를 대체하는 데 사용할 수 있습니다.

int main() {
    struct {
        int operator() (int i) const {
            return 42;
        }
    } nice;

    nice(0xbeef);
}

콜론 다음에 오는 것은 sample단순히 기본 상속 sample사용하여 파생 된다는 의미 입니다. (구조체 : 공용, 클래스 : 개인용)