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

C/C++ Q/A
[2464] Re:Re: 그건 고수님들, 특히 김백일님 이라는 뜻일 수도 있습니다.
ILoveMe [] 1247 읽음    2003-04-23 00:49
김백일님이 C++관련 게시판을 운영하시나요?
답변을 많이 해주시는데 수고하시네요.
저도 지금 Accelerated C++보고 있는 중입니다.
음하하~ 괜찮네요.


김백일.cedar 님이 쓰신 글 :
: 김광수 님이 쓰신 글 :
: : 제가 어셈을 해서 쪼금만 이상하면 꼭 집고 넣어가는 성격이거든요 헤헤~
:
: C++은 어셈블리와는 완전히 반대의 성격을 갖고 있는 언어입니다.
: 특히 Accelerated C++은 포인터와 같은 저수준의 개념은 처음에 깡그리 무시하고,
: 고수준의 추상화된 개념부터 익히도록 되어 있습니다.
: 지금은 추상 개념부터 확실히 익히세요. 그러면 나중에 자연히 저수준 개념도 잘 이해할 수 있게 됩니다.
:
: : Accelerated C++  책 보다가 앞장부터 막히내요~
: : 전체 문장은 대충 생략하구요..
: : const std::string spaces(greeting.size(),' ');
: : 라는 문장에서 햇갈리는대요.
: : 우선
: : 1.spaces가 변수라고 책에서는 설명했는대 이건 제가 알고 있는 관점에서 보면 함수에 가까운대요.
: : size만큼의 공백문자를 채우라는 함수라고 생각하는대 이걸 변수라구 하니 참 난감하내요
:
: 50페이지의 설명이 잘 이해가 안되시나요? AC++에 따르면,
: std::string 타입의 변수인 spaces를 정의하는데 ()안의 표현식들 대로 '구성'한다는 의미입니다.
: C++의 변수 정의는 원래 이런 겁니다.
:
: : 이걸 변수라고 말하기전에 우선 std와 string에 대한 자세한 설명이 앞서야 되는대 이에 관해선 설명이 부실한거 같습니다..
: : 얼래 보통 출력할려면 제가 배운내용대로라면 iso::cout 라는 걸 쓰는대 std라는 표준라이브러리?라는걸 쓰더군요.
: : std가 정확히 어떤 일을 하는지는 잘 모르겠습니다. 네임스페이스의 일부라는거밖에는 ㅡ.,ㅡ
: : 네임스페이스가 어떤 이름들을 그룹화 시키는거라는대..쩝... 원서 샀더라면 첫장읽고 덮었을것 같습니다.
:
: 이름공간(namespace)에 대한 간단한 설명은 제가 쓴 다음 글을 참고하세요.
: http://www.borlandforum.com/impboard/impboard.dll?action=read&db=cpp_qna&no=2356
: 지금은 이 정도만 알고 있으면 됩니다.
:
: : 해석조차 힘드니 ..
: : 변수안에 객체를 쓰구 컴포넌트(size)까지 정의하고 그걸 함수로까지 쓰다니 참 ~^^;;;;;;;;;;
: : 암턴 책 내용은 제가 이해를 못하겠습니다.
: : 알기쉽게 설명좀 해주세요 ㅠㅠ
: :
: : 특히 변수를 함수처럼 쓰는게 가장 햇갈림~...<==자세한 설명좀 부탁 (__)
:
: 예, 좀 더 자세히 설명해드리죠.
:
: C++에서는 모든 변수 선언은 객체(클래스의 인스턴스)를 정의하는 걸로 보시면 됩니다.
: 심지어 int와 같은 기본 타입도 일종의 클래스로 볼 수 있습니다.
: (정확히는 클래스가 아니지만, 클래스로 볼 수 있는 특징이 있다는 겁니다.)
: 객체가 처음 생성될 때는 생성자(constructor) 함수를 호출해서 객체의 속성을 초기화하는 과정을 거칩니다. 사용자가 지정하지 않아도 컴파일러가 기본 생성자 함수를 만들어서 자동으로 호출해 주는 겁니다.
: 즉, 굳이 string이 아니라 int의 경우도 컴파일러가 기본 제공하는 생성자를 써서 내용이 초기화 되는 겁니다. 예를 들어 C++에서는 다음과 같은 코드를 쓸 수 있습니다.
:
:     int AValue(100); // 함수 호출처럼 보이지만, int AValue = 100; 과 동일합니다.
:     std::cout << AValue << std::endl;
:
: 이렇게 하면 컴파일러 내부에서 int::int(int n)과 같은 식으로 생성자 함수를 만듭니다.
: 객체가 생성될 때 이 생성자가 호출되고, 이 생성자는 AValue 자신의 값을 100으로 초기화하게 됩니다.
:  
: string(정확히는 basic_string)의 생성자가 어떤 것이 있는가를 알아보려면
: 도움말을 검색해서 'Constructors'라고 되어 있는 부분을 찾아보세요.
: basic_string 이라는 이름의 함수(생성자 함수는 클래스 이름과 동일한 이름을 갖습니다.)가 여러개가 있다는 것을 알 수 있습니다.
:
: 이 중에서 위의 예제에 해당하는 생성자는 다음 원형을 갖습니다.
:
: basic_string(size_type n, charT c,
:               const Allocator& a = Allocator());
:
: 여기서 Allocator(할당자) 부분은 일단 무시해도 됩니다.
: 모든 STL 컴포넌트는 할당자를 사용자 정의한 것으로 교체할 수 있는데,
: 특별한 경우 외에는 교체할 필요가 없으므로 무시하세요.
: Allocator를 무시하면 다음과 같겠죠?
:
: basic_string(size_type n, charT c);
:
: 도움말을 읽어보면, n은 string 객체의 크기를 n으로 초기화한다는 얘기고,
: c는 n개의 모든 문자를 c로 초기화 한다는 겁니다.
:
: 즉, 다음 문장은
: const std::string spaces(greeting.size(), ' ');
:
: spaces 문자열을 greeting 문자열의 크기(size)와 같게 하되, 내용은 전부 공백(' ')으로 채워라
: 라는 뜻이죠. 이제 아시겠죠?
:
: 항상 모르는 부분은 도움말이나 레퍼런스를 참고하면 됩니다.
: STL 부분은 http://www.sgi.com/tech/stl/ 이곳에서도 자세히 찾을 수가 있죠.
:
:

+ -

관련 글 리스트
2448 김백일님과 고수님들 에게 질문 Accelerated C++ 김광수 1214 2003/04/21
4013     Re:김백일님과 고수님들 에게 질문 Accelerated C++ 김광수 1163 2003/04/21
2450     Re:김백일님과 고수님들 에게 질문 -> ㅎㅎ 저는 고수가 아니라는 뜻이군요. 물론 사실이지만... ^^; 김백일.cedar 1248 2003/04/21
2464         Re:Re: 그건 고수님들, 특히 김백일님 이라는 뜻일 수도 있습니다. ILoveMe 1247 2003/04/23
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.