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
[49005] Re:Re:Re:클래스만들기.
아루스 [tinydew4] 1366 읽음    2007-04-20 12:51
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:클래스만들기. 이정구 3030 2007/04/20
49005             Re:Re:Re:클래스만들기. 아루스 1366 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.