2010-03-26 3 views
5
class CRectangle { 
    int x, y; 
    public: 
    void set_values (int,int); 
    int area (void); 
    } rect; 

사이의 이름, 닫는 중괄호 후와 세미콜론 사이에 'RECT'는이 클래스 정의에 무엇을 의미 하는가? 나는 명확한 설명을 찾는 데 어려움을 겪고있다. 또한 : 그것이 무엇이든, 당신은 구조체에 대해서도 그렇게 할 수 있습니까?클래스 선언 혼란 - 닫는 중괄호이 예에서 세미콜론

답변

10

rect은 변수 (이 경우 개체)의 이름입니다.

그것은이 말씀하신 정확히 것처럼입니다 : 대신 int의 제외

int rect; 

새로운 유형의 정의가는 CRectangle을했다. 일반적으로, 클래스 유형은 개별적으로 선언하고, 당신은 아마 잘 알고있는대로 다음

CRectangle rect; 

으로 사용하지만, 그런 선언의 일부로서 새로운 유형을 선언 완벽하게 합법적이다.

그리고 네, 그것은 구조체 작동 :

struct { int x, y; } rect; 
: 당신은 다시 사용하지 않을 경우

는 사실
struct SRectangle { int x, y; } rect; 

당신도 유형에 이름을 부여 할 필요는 없습니다

"익명 구조체"라고합니다 (클래스에도 적용됩니다).

+0

"익명 구조체"가 아니라 "익명 구조체"입니다. C++에는 익명 구조체가 없습니다. http://stackoverflow.com/questions/2253878/why-does-c-disallow-unnamed-structs-and-unions를 참조하십시오. –

2

컨텍스트에 따라 전역이거나 네임 스페이스에 속한 CRectangle 유형의 개체입니다.

+0

또는 클래스 또는 로컬 범위. – kennytm

1

인스턴스를 선언합니다. 그냥 좋아 :

class CRectangle 
{ 
    // ... 
}; 

CRectangle rect; 

1

구조체와 사이의 유일한 차이 (액세스 지정자와 상속에 관해서) 대중에게 struct의 기본 제외 class 및 C++에서 struct 사이에는 차이가 없습니다 클래스는 구조체가 공용 기본 상속 및 액세스 권한을 가지며 클래스는 private를 기본값으로 사용합니다.