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;
}
위에서 굵게 표시한 부분처럼 수정해 보세요.