728x90

소스코드 160

1_함수 객체

#include using std::cout; using std::endl; using std::cin; //first, second, third, forth, fifth_functor, fifth_stl, sixth #define problem //a. 함수 객체는 함수처럼 호출 가능한 클래스 객체이다. //b. 함수 객체는 함수처럼 사용할 수 있으면서도 상태를 가질 수 있다. //c. 객체가 함수처럼 동작하려면 '()'연산자를 재정의해야 한다. #ifdef first void print() { cout

0_함수 포인터와 콜백 함수

#include using std::cout; using std::endl; using std::cin; //first, second, third, forth, fifth_call, fifth_callback, sixth_fp, sixth_stl #define sixth_stl //1. 함수의 이름은 함수가 시작하는 시작 주소를 의미한다. //2. 함수 포인터는 함수의 시작 주소 즉 함수의 이름을 저장하는 포인터이다. //3. 함수 포인터는 함수 시그니처가 같은 것끼리 짝을 이룬다. #ifdef first void print(int n) { cout

LinkedList 양방향 리스트 예제 <Head가 포인터가 아닌 리스트>

////////////////////////////////////////////////////////////// // 헤드노드(g_pNodeHead)부터 실제 데이터를 저장하는 이중연결리스트 // 리스트가 비어있으면 새로운 데이터를 헤드로 저장한다. // InsertLink_H : 새로운 노드가 헤드의 Next에 연결되는 전위 연결. // InsertLink_T : 새로운 노드가 테일의 Next에 연결되는 후위 연결. ////////////////////////////////////////////////////////////// header.h #pragma once #include #include // time() #include // + + #include #include using std::cout..

LinkedList 단방향 리스트 예제 <Head가 포인터가 아닌 리스트>

////////////////////////////////////////////////////////////// // 헤드노드(g_pNodeHead) Next부터 실제 데이터를 저장하는 연결리스트 // 사전에 헤드노드를 실제 노드로 생성해 두고 처리한다. (실제 노드지만 데이터는 저장 안 함) // InsertLink_H : 새로운 노드가 헤드의 Next에 연결되는 전위 연결. // InsertLink_T : 새로운 노드가 테일의 Next에 연결되는 후위 연결. // 주) 단방향 연결리스트이므로 기준 노드의 앞쪽으로 연결하는 건 불가능하다. // (이전 노드 -> 기준 노드! -> 신규 노드!! -> 다음 노드) // (이전 노드 -> 신규 노드!! -> 기준 노드! -> 다음 노드) ///..

Cpp 가변인자함수 예제

출처 : KGCA 게임 아카데미(http://www.kgcaschool.com/). 수업 예제 파일 가변 인자 함수 써본적은 있는데 내용 정리 필요. 참고코딩 도장 : 가변 인자 함수 사용하기soen.kr MSDN variableFactor.h #pragma once #include //initializer_list, vfprintf #include //initializer_list #include //va_list using std::cout; using std::endl; using std::initializer_list; bool g_debug = false; #pragma region C_style void debugOut(const char* str, ...) { va_list ap; if (g..

Cpp cast연산자들 예제

출처 : KGCA 게임 아카데미(http://www.kgcaschool.com/). 수업 예제 파일 참고 : 1) bad_cast 예외2) using과 typedef3) using namespace ###; 는 취소할 수 없다. 그래서 using문이 작동하는 범위를 정해버림(..)4) __int64 == long long 참고 header.h #pragma once #include using std::cout; using std::endl; dynamic_cast.h #pragma once #include "header.h" namespace dyn { //dynamic_cast는 vtable을 사용하기 떄문에 반드시 virtual 함수가 있어야 작동한다. class dA { public: virtual..

Cpp Template 예제 (student mgr)

출처 : KGCA 게임 아카데미(http://www.kgcaschool.com/). 수업 예제 파일 솔직히 제대로 이해 못한 예제.다시 볼 필요 있음. header.h #pragma once #include #include #include #include using std::cout; using std::cin; using std::endl; using std::string; using std::wstring; using std::wcout; using std::bad_alloc; //예외 클래스 A //사용하진 않음 class ExceptA { public: void What() { cout m_pData; return pData; } pNode = pNode->m_pNext; } return NULL..

Cpp 클래스 템플릿 부분 특수화 예제

출처 : KGCA 게임 아카데미(http://www.kgcaschool.com/). 수업 예제 파일. OriginalTemplate.h #pragma once // 어차피 멤버 함수를 클래스 템플릿 외부에 정의해서 다른 파일로 분리할 수 없으니 // 클래스 템플릿 안에다가 인라인으로 넣어버림. // 기본 타입 클래스 템플릿 template class Bag { T* elem; int size; int max_size; public: void add(T t) { T* tmp; if (size + 1 >= max_size){ max_size *= 2; tmp = new T[max_size]; for (int iCnt = 0; iCnt < size; iCnt++) { tmp[iCnt] = elem[iCnt];..

Cpp 함수 템플릿 예제

출처 : KGCA 게임 아카데미(http://www.kgcaschool.com/). 수업 예제 파일. 참조 사이트 FunctionTemplates.h #pragma once #include #include #include //기본적인 함수 템플릿 template T add(T x, T y) { T result = x + y; return result; } //함수 템플릿의 특수화 template char* add(char* x, char* y) { char* result = new char[255]{ 0, }; strcat_s(result,100, x); strcat_s(result,100, y); return result; } //함수 템플릿을 특수화한 것 template double add(doubl..

Cpp 예외클래스 예제

출처 : KGCA 게임 아카데미(http://www.kgcaschool.com/). 수업 예제 파일. MSDN 예외처리 부분 MSDN Exception class TODO : 더 자세히 공부할 것(..) ExceptionHandlingSample.cpp #include using std::endl; using std::cout; using std::cin; //exception const char* account = "1234-5678"; //계좌번호 int sid = 1122; //비밀번호 int balance = 1000; //잔액 int sk = 0; class AccountExpt //예외 클래스 { char acc[10]; int sid; int secretkey; public: void wha..

반응형