C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 강좌/문서
C++Builder Programming Tutorial&Docments
[121] 인스턴스 이름없는 구조체
김태선 [cppbuilder] 10306 읽음    2007-03-23 10:27
C에서는 구조체에 인스턴스명을 붙이지 않으면 사용할 수 없었다.
하지만 C++에 와서는 이러한 제한은 없어져 필요에 따라 이름없는 구조체의 사용도 가능하게 되었다.


struct
{
union
{
  char  array[100];
  struct
  {
   char head;
   char count;
   char a;
   char b;
   char c;

   int  sum()
   {
    return a + b + c;
   }
  };
};
} m;

이 예에서, union 과 union 속의 struct 에 대해서 인스턴스 이름을 부여하지 않았다.
하지만 멤버를 엑세스 할때는
m.array
m.head
m.a
식으로 바로 참조 가능하다.

위의 예에서 필요없는
union과 union 속의 struct에 인스턴스 명칭을 부여한다는 것은 프로그래밍에 귀잖은 요소다.
그래서 C++에서는 이름없는 구조체 인스턴스를 허용하는 것이다.
특히 위와 같이 union과 struct를 같이 사용할때 이름없는 구조체의 선언은 자주 쓰이게 된다.

이름없는 구조체라 할지라도 위의 예와 같이 멤버함수를 두는 것도 가능하다.
하지만 꼭 구조체명을 필요로 하는 문법이 필요한 경우는 당연히 명칭을 붙여야 한다.
또한 멤버로 클래스가 들어가는 경우는 필요에 따라 명칭을 붙여야 하지만 대부분은 필요없다.

그러면 클래스는 어떨까?
C++에서는 구조체와 클래스가 거의 같게 취급이 된다.
하지만 이름없는 객체의 선언은 불가하다.
이것이 struct 와 class의 몇가지 차이점 중 하나다.

이러한 사항은 C++빌더와 VC++이 공히 같다.

+ -

관련 글 리스트
121 인스턴스 이름없는 구조체 김태선 10306 2007/03/23
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.