본문 바로가기

C++

템플릿클래스 //헤더선언 template class CMultiThread { friend class CThreadsync; public: class CThreadSync { public: CThreadSync(VOID); ~CThreadSync(VOID); }; public: CMultiThread(VOID); ~CMultiThread(VOID); private: static CCriticalSection mSync; }; //cpp파일 //전역변수 초기화 template CCriticalSection CMultiThread::mSync; template CMultiThread::CMultiThread(VOID) { } template CMultiThread::~CMultiThread(VOID) { } templa.. 더보기
중첩클래스 중첩 클래스 중첩 클래스란 클래스 선언문안에 다른 클래스가 선언되는 형태이다. 특정 클래스를 구현하기 위한 보조 클래스가 필요한데 보조 클래스는 오직 이 클래스 내부에서만 사용하며 외부에는 전혀 알릴 필요가 없다면 이때 클래스를 중첩시킨다. 클래스에 캡슐화되는 것은 흔히 멤버 변수, 멤버 함수 정도이지만 타입도 포함될 수 있다. 클래스가 타입이므로 다른 클래스에 포함될 수 있는 것은 당연하며 열거형이나 typedef로 정의한 타입도 물론 가능하다. 다음 예제를 보자. #include class Outer { private: class Inner { private: int memA; public: Inner(int a) : memA(a) { } int GetA() { return memA; } } obj;.. 더보기
new연산자 이용해서 다차원 배열 생성!! 우선 new는 C에서 사용되는 malloc과 똑같다고 생각하는 사람이 많은것 같은데 틀린 이야기다. new연산자는 할당 대상만큼의 메모리를 heap으로 부터 할당하여 그 번지값을 리턴 한다. 리턴되는 번지값의 타입은 point이기 때문에 point가 들어가는 함수의 인자값으로 바로 사용이 가능 하다. malloc의 경우에는 무조건 voide*형을 리턴 하기 때문에 캐스트 연산자를 사용해야 된다. new로 메모리 할당과 메모리 해제 그리고 포인터를 이용한 고차원 메모리 할당과 해제까지 알아보겠다. new 메모리 할당 사용방법 자료타입 *변수이름 = new 자료타입; ex) int *Count = new int; delete 메모리 해제 사용방법 delete 변수이름; ex) delete Count; 1차원.. 더보기
객체 생성시 객체 변수명() 으로 생성시 문제!! 질문했다가 ㅠㅠ.. 어케어케 하다 보니 결론 난 내용이네여^^ CListen temp(); 이런식으로 객체를 생성하니 않되네여 ㅠㅠ.. 그런데 CListen temp(5); 이런식으로 되네여^^..ㅋㅋ 클래스 구조는 class CListen :public CThread { public: //실제구동 virtual void run(); public: CListen(); CListen(int i); virtual ~CListen(); }; 이런데^^.. 생성법이 이상해서 그런거 같은데 ㅋㅋ 이해하고 넘어 가려고요^^ 답변좀 부탁드려열^^ ================================================================= 어케 어케 하니 해결봤네여 ㅠㅠ.. int _tmain.. 더보기
다형성에 관한 자료 다형성 발표할 기회가 있어서 만들게 되었는데^^ 공유 해드려여^^ 마니 공부 하시길!! 아마!!.... 제가 ... 2학년 2학기때 발표 했던기억이네여!!... 아마 1시간정도 발표 했는데 ㅋㅋ 대부분 주무시더라고요^^... ㅋㅋ 그래도 만들면서 재미 있었네여!!...ㅋㅋ 퍼가실때 댓글이라도!!.ㅋㅋ 더보기
ifstream::seekg ifstream fin("file", ifstream::in); while(fin.getline(buf, 128)){...} fin.clear(); //파일의 끝까지 읽으면 seekg로는 eof 비트가 재설정되지 않는다. 이 함수 필요 fin.seekg(0, ios_base::beg); // ... 파일을 다시 읽는 등 다른 일을 한다.. 더보기
zlib 압축 클래스 펌!! Cgzip.h /* zlib을 이용한 Cgzip.h, Cgzip.cpp 클래스 작성 version 0.0.1, October 26th, 2010 Copyright (C) 2010 Copynull source bug report to copynull@nate.com */ #pragma once #include #include "zlib.h" #pragma comment(lib, "zdll.lib") class Cgzip { FILE*fp; gzFilegFile; chardestFile[FILENAME_MAX]; charbuf[FILENAME_MAX]; intread; public: Cgzip(); virtual ~Cgzip(); bool Compress(char *input, int clevel = 6);.. 더보기
STL 정보 펌!! 17. STL References STL에 관한 다음 사이트들을 방문해보라 : iterator에 대한 매우 좋은 설명 http://www.cs.trinity.edu/~joldham/1321/lectures/iterators/ Intro to STL SGI http://www.sgi.com/tech/stl/stl_introduction.html Mumits STL 초보 가이드 (약간 오래된 것) http://www.xraylith.wisc.edu/~khan/software/stl/STL.newbie.html ObjectSpace 예제 : ObjectSpace는 300개가 넘는 예제를 가지고 있고, 따라서 초보자에게 아주 좋은 출발점을 제시해준다. ftp://butler.hpl.hp.com/stl/examp.. 더보기
zlib 정보!! 압축!! http://cobay.blogner.com/20045656145 http://kaistizen.net/project/Zip/Index.htm 더보기
클래스에서 사용되는 static 멤버 변수 및 함수 static 멤버 변수를 이해하기 위해서 먼저 알아야 하는 개념은 일반 static 변수이다. 다음 코드는 함수 내에서 static을 선언하는 경우이다. 이 것이 우선 이해가 되어야 클래스에서 사용되는 static을 이해할 수 있을 것이다. // 첫 번째 예제 #include void func1( void ) { static int count = 0; printf( "%d n", ++count ); } void main( void ) { func1(); // count = 9; , 컴파일 에러, func1()의 지역 변수에 접근이 불가능 func1(); } 위 코드를 실행하면 결과는 다음과 같다. count = 1 count = 2 위 코드를 설명하자면, static은 func1() 함수가 사용하는 전역.. 더보기