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

C++빌더 Q&A
C++Builder Programming Q&A
[49007] Re:Re:Re:Re:클래스만들기.
pd [kmshts] 1213 읽음    2007-04-20 14:30
더 궁금한점만 아래에 추가하였습니다.

1.
2.
3.
4.

5.

6. this가 포인터라는걸 몰랐습니다.
자바에서는 전부다 쩜(.)으로 통일했지만. C++에서는 쩜이아니라.
->도쓰므로..


7.

8. 제가 사용해봤는데.
뭐 저렇게 써도되더라구요
아 제가 질문했던의도는
선언을 저렇게하고
또사용을 저렇게 하는가였습니다.
저도 . 과 ->의 차이는 알고있었습니다.
그런데 여기와서 좀더 구체적인 설명이되니 더 자세하게 알수있었습니다.


9. 가상 함수라는게 자바의 오버로딩과 오버라이딩을 말하는건가요?
설명이 비슷한거같습니다.

두분설명고맙습니다.
하지만 두분이 정확하게 자바에대해 모르신거같아서 답변이 약간모호하긴했습니다.
제생각엔 두분의 말씀을 참고하고 또 제가 참고한 책을 보니까
9번의 경우는 가상함수라는게 오버라이딩을 의미하는것같습니다.

즉 가상함수는 오버라이딩을 위한 기능이다라고하면 자바에서는 오버라이딩을 지원하므로
자바에서도 지원하는기능이다라는 결론이 생깁니다.




허정주 님이 쓰신 글 :
: pd 님이 쓰신 글 :
: : 답변고맙습니다.
: : 그런데 궁금한점이있습니다.
: : 제가 아직 잘몰라서그러는데 아래의 궁금한점이있습니다.
: : 1. 굵은글씨의 의미와 왜 거기에 써야하는지요
: 밑에 다 써있네요.
: IniFiles.hpp 를 include 하는건 TIniFile 객체를 사용하기 위함이죠.
:
: : 2. 특히 인클루드는 한꺼번에 묶을수도있을거같은데 그렇게 안하시는걸 보니무슨이유가있을거같고
: include 를 한꺼번에 묶는 다는 말은 한곳에 다 작성을 한다는 뜻인가요.
: 이 소스는 그래도 되겠네요. 전 그렇게 써요 ㅎㅎ
: cpp 파일에 다 작성해도 되겠네요. 만약 헤더파일에 TIniFile class 가 선언되거나 했다면 저대로 꼭 써야하구요.
:
: : 3. #endif를 헤더파일전체로 감싸게 하는것도 이유가있을거같습니다.
: 헤더를 #ifndef - #endif 로 묶는 것은 두번 include 를 할 경우 문제가 되기때문에 최초 include 시에만 내용이 적용 되도록 합니다.
:
: : 4. 또한 왜 String를 쓰지않고 AnsiString를 쓰는건지도 궁금합니다.
: String 은 BCB 도움말에 Delphi AnsiString 이라고 나와있네요.
:
: : 5. 그리고 왜 헤더파일이 아닌곳에 인클루드를사용해 vcl.h를 호출하였습니까?
: vcl.h 파일은 헤더에서 필요하지 않기 때문이죠.
: 자동 생성되는 코드만 봐도 cpp 에서 include 되더군요.
:
: : 6. 그리고 메서드에서 this.Host로 받고싶은데 해보니까 그렇게하면 오류가뜨고 this->Host로 써야하던데
: :    잘못된것아닐까요?
: this 는 자기 자신을 가리키는 포인터 입니다.
:
: : 7. __fastcall 이것의 의미는 무엇인지요?
: :    인터넷에는 좀복잡하게 나와있던데. 쉽게 설명좀부탁드립니다.
: :
: 함수 호출 규약은 "김태선" 님이 자세히 설명 해 주신게 있네요.
: http://cbuilder.borlandforum.com/impboard/impboard.dll?action=read&db=bcb_tutorial&no=120
:
: : 8. 다른 모듈에서 Host를 부를때
: : IniFile a = new IniFile();
: : a.getHost("ddd");
: : 이렇게 쓰는게 맞나요?
: : 자바틱하게 썼는데 맞는지모르겠습니다.
: :
: IniFile a;
: a.getHost("ddd");
: 로 정적 선언을 하여 호출하던가
:
: IniFile *a = new IniFile();
: a->getHost( "ddd" );
: 로 동적 선언을 하여 호출하시면 되겠네요.
:
: : 9. 가상 함수라는게 자바의 오버로딩과 오버라이딩을 말하는건가요?
: : 설명이 비슷한거같습니다.
: 자바를 잘 모르네요;; 이 부분은 책을 인용하겠습니다.
:
: Mammal 는 Dog 의 부모클래스라는 가정하에...
:
: C++은 베이스 클래스를 가리키는 포인터에 파생 클래스 객체가 대입되도록 하는 다형성을 지원합니다. 따라서
: Mammal *pMammal = new Dog;
: 가 가능합니다.
: 이는 새로운 Dog 객체를 힙에 만들고 그 객체의 포인터를 반환하여 이를 Mammal 을 가리키는 포인ㅌ터에 치환합니다. 이는 좋습니다. 왜냐하면 Dog는 Mammal 의 한 종류이기 때문입니다.
: 그 다음에 여러분은 이 포인터를 사용하여 Mammal 상의 어떠한 메쏘드도 호출할 수 있습니다. 여러부닝 하고 싶은 것은 Dog()에서 재생(오버라이딩)된 메쏘드가 자신의 함수를 호출할 수 있도록 하는 것입니다. 가상 함수가 이를 가능케 하여줍니다.
:
: #include <iostream.h>
: class Mammal
: {
: public:
:     Mammal(){}
:     virtual void speak() const { cout << "Mammal speak!" << endl; }
: }
: class Dog : public Mammal
: {
: public:
:     Dog(){}
:     void speak() const { cout << "Woof!" << endl; }
: }
: 를 선언하고
: Mammal *mammal = new Dog;
: mammal->speak();           // <- 이부분에서 Mammal speak! 이 아닌 Woof! 가 출력됩니다 ~_~
:
: :
: :
: : 이정구 님이 쓰신 글 :
: : : : : : : : : //---------------------------------------------------------------------------

#ifndef CommonFunctionH
#define CommonFunctionH

#include "IniFiles.hpp"
//---------------------------------------------------------------------------


class IniFile
{
private:
   AnsiString  Host;

public:

    int getHost(String execpath);
};

#endif






#include
#pragma hdrstop

#include "CommonFunction.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)


int IniFile::getHost(String execpath)
{
  TIniFile *IniFile = new TIniFile(execpath);
  Host = IniFile->ReadString("LoginSection", "Host", "127.0.0.1");
  delete IniFile;

  return 0;
}



위에서 굵게 표시한 부분처럼 수정해 보세요.

+ -

관련 글 리스트
48998 클래스만들기. pd 2188 2007/04/19
48999     Re:클래스만들기. 이정구 1558 2007/04/20
49000         Re:Re:클래스만들기. pd 1457 2007/04/20
49006             Re:Re:Re:클래스만들기. 이정구 3031 2007/04/20
49005             Re:Re:Re:클래스만들기. 아루스 1367 2007/04/20
49007                 Re:Re:Re:Re:클래스만들기. pd 1213 2007/04/20
49013                     Re:Re:Re:Re:Re:클래스만들기. 아루스 1546 2007/04/20
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.