수색…
이름없는 수업들
명명 된 클래스 나 구조체와 달리 명명되지 않은 클래스와 구조체는 정의 된 위치에서 인스턴스화되어야하며 생성자 또는 소멸자를 가질 수 없습니다.
struct {
int foo;
double bar;
} foobar;
foobar.foo = 5;
foobar.bar = 4.0;
class {
int baz;
public:
int buzz;
void setBaz(int v) {
baz = v;
}
} barbar;
barbar.setBaz(15);
barbar.buzz = 2;
익명 회원
C ++에 대한 비표준 확장으로서 일반적인 컴파일러는 클래스를 익명 멤버로 사용할 수 있습니다.
struct Example {
struct {
int inner_b;
};
int outer_b;
//The anonymous struct's members are accessed as if members of the parent struct
Example() : inner_b(2), outer_b(4) {
inner_b = outer_b + 2;
}
};
Example ex;
//The same holds true for external code referencing the struct
ex.inner_b -= ex.outer_b;
형식 별칭으로
즉 통해 유형 별칭을 만들 때 이름 클래스 유형도 사용할 수있다 typedef
및 using
:
C ++ 11
using vec2d = struct {
float x;
float y;
};
typedef struct {
float x;
float y;
} vec2d;
vec2d pt;
pt.x = 4.f;
pt.y = 3.f;
익명 연합
익명 union의 멤버 이름은 union 선언의 범위에 속하며이 범위의 다른 모든 이름과 구별되어야합니다. 여기의 예제는 "struct"를 사용하는 예제 익명 멤버 와 같은 구조이지만 표준에 부합합니다.
struct Sample {
union {
int a;
int b;
};
int c;
};
int main()
{
Sample sa;
sa.a =3;
sa.b =4;
sa.c =5;
}
Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow