Dev/C++

functor - 함수객체

functor # functor(함수객체)는 함수의 인터페이스를 지원하는 객체를 말합니다. 구체적으로 말하면 class에 operator()를 overloading하여 사용하는 관용구를 말합니다. #include #include using namespace std; class Adder { public: Adder() {} ~Adder() {} int operator()(int lvalue, int rvalue) { return nSum_ = (lvalue + rvalue); } int operator()(int value) { return nSum_ += value; } int Result() const { return nSum_; } private: int nSum_; }; int FnAdd(int ..

2008.05.01 게시됨

Dev/C++

Casting operators

Casting operators #C++에서는 4가지의 cast 연산자가 추가 되었습다. 물론 C언어와의 호환성을 위해 C언어의 문법도 지원합니다. 그러나 명확하고 보다 안전함 때문에 C++의 cast를 추천합니다. static_cast #사전적 의미는 런타임시 타입에 대한 체크와 cast가 이루어지는것이 아니고 컴파일시에 체크와 cast되는 연산자 일반적으로 C언어의 형변환이 여기에 속합니다. 그리고 base 클래스에서 derived 클래스로의 down cast시에도 이용되는데 런타임시 타입을 체크하지 않고 cast가 되기 때문에 오버헤드는 없으나 잘못된 포인터로 인한 위험은 존재합니다. class Base {}; class Derived : public Base {}; void f(Derived *p..

2008.05.01 게시됨

Dev/C++

export

export #C++ template의 내보내기 키워드 입니다. 아직 제대로 구현되어 있는 컴파일러는 없습니다. template은 타입이 정의 되지 않은 상태의 함수나 객체를 컴파일 타입에 정의를해서 코드를 생성하는 일종의 코드제너레이터 같은 것입니다. template class TClass { T t; }; 위의 코드는 TClass intClass 란 식으로 인스턴스를 만들기 전까지는 혹은 함수 같은 경우 사용되지 전까지는 코드를 만들지 않습니다. 아마 아래와 같은 코드를 컴파일 당시 만들것입니다. class TClass { int t; }; 그도 그럴것이 타입을 모르는데 어떻게 코드를 만들겠습니까? 그렇다고 모든 타입에 대해서(사용자정의 타입까지 한다면 헉..)다 코드를 만들수는 없는 노릇이고 .....

2008.05.01 게시됨

Dev/C++

main function

main Function #ISO C++의 공식 main함수의 원형은 아래와 같습니다. int main() int main(int argc, char *argv[]) 두개의 원형이 아닌이상 모두 표준에 어긋나는것입니다. 표준화이전에 쓰여진 책 혹은 컴파일러에서는 void main() 이란 원형도 타탕하다는 주장이 있었습니다. 그러나 그것은 표준에 어긋납니다. VC++ 같은 컴파일러는 void main()을 허용하지만 하위호환성을 위해 남겨 놓은 것 뿐입니다. return #표준 main함수는 int를 리턴하게 되어 있습니다. int main() { return 0; } 허나 ISO C++에서는 main함수에서의 명시적인 리턴이 없으면 자동으로 return 0;를 자동으로 넣어줍니다. // 이 main은 ..

2008.05.01 게시됨

Dev/C++

GRETA

MS의 research site에서 다운 받을수 있는 정규식(Regular Expression ) 라이브러리 이다. C++에서도 펄과 같은 정규식표현식이 필요할때 사용을 하면 된다. 물론 이것 말고 더 boost의 regex++ 라는 유명한 라이브러리도 있지만 regex++보다 가볍고 몇개의 소스로 배포 되어 있어서 사용하기에 더 편한것 같다. 그리고 regex++보다 낳은 성능을 주장(?)하고 있다 그렇지만 현재 적용중인 몇개의 소스는 regex++ 로 되어 있다 The GRETA Regular Expression Template Archive Fast backtracking regular expression engine. Separately compiled patterns. Matches agains..

2007.05.14 게시됨