2013-06-15 2 views
5

누구나 익명의 공용 구조체 (또는 구조체)의 차이점을 언급 할 수 있습니까? 방금 ​​하나를 찾았습니다.
익명 공용체에서 함수를 정의 할 수 없습니다.익명 조합과 일반 조합

+3

[C의 무명 struct/union] (http://stackoverflow.com/questions/13376494/unnamed-struct-union-in-c), [C의 익명 구조체/유니온] (http : // gcc.gnu.org/ml/gcc-patches/1999-06n/msg00376.html) –

답변

7

점 연산자 "."는 필요하지 않습니다. 익명 결합 요소에 액세스합니다.

#include <iostream> 
using namespace std; 
int main() { 
    union { 
     int d; 
     char *f; 
    }; 

    d = 4; 
    cout << d << endl; 

    f = "inside of union"; 
    cout << f << endl; 
} 

이 경우 성공적으로 컴파일되지만 일반 연합에서는 "아니오"로 컴파일됩니다.

또한 익명 union에는 공개 멤버 만있을 수 있습니다.

추신 : 구문의 class-name 부분을 생략해도 노동 조합은 익명 결합체가 아닙니다. 노동 조합이 익명의 노동 조합으로 자격을 얻으려면 선언은 객체를 선언해서는 안됩니다.

+2

좋은 대답, +1! 나는 익명의 노조가 존재한다는 것을 전혀 모르고 있었다 :) 어떤 사람이 더 읽기를 원한다면 (위의 대답을 읽었을 때!) 9.4 절, INCITS/C++ 스펙의 다른 미묘한 부분에 대한 글 머리 기호 5와 6을 보라. ISO/IEC 14882-2011 [2012]. – Jimbo

0

내가 아는 한 익명 구조체는 일부 컴파일러에서 지원할 수 있지만 표준 C++에는 존재하지 않습니다.

익명 조합은 보호 된 구성원이나 개인 구성원을 가질 수 없습니다. 회원은 노동 조합의 이름을 사용하지 않고 액세스 할 수 있습니다 (분명히 권한이 없으므로!). 세계적 익명의 노동 조합 (신의 금지)은 정적으로 선언되어야합니다.