C++ (40) 썸네일형 리스트형 C++ 템플릿(template) template이란? 함수나 클래스를 개별적으로 다시 작성하지 않아도, 여러 자료 형으로 사용할 수 있도록 하게 만들어 놓은 틀. template은 코드 라인 단계에서 자료형이 정해진다. 함수 템플릿 템플릿 선언 방법은 template 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 class templateTest { public: template T Sum(T value1, T value2) { return value1 + value2; } }; void main() { templateTest test; test.Sum(10, 10); test.Sum(10, 10); } cs 4행 : 템플릿의 선언 5행 : 반환형과 매개변수의 인자를 템플릿으로 받는다. 14행 : 템플릿의 자료형.. C++ 함수객체 함수객체란? 함수 호출 연산자를 연산자 오버로딩하여 객체를 함수처럼 사용하는방법이다 함수객체 사용방법 1 2 3 4 5 6 7 8 9 10 11 12 13 14 class CObj { public: int operator()(int _a, int _b) { return _a + _b; } }; void main() { CObj functor; cout C++ 상속 상속이란? 부모의 기능들을 자식이 가져다가 쓰는것이다. 상속사용법 상속 선언은 : 접근 제한 자 클래스명을 해주면 된다 만약 전급 제한자를 명시하지 않으면 컴파일러는 자동적으로 private로 만든다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 class Animal { public: char* name; int age; Animal() {} Animal(const char* name, int age) : age(age) { strcpy_s(this->name, strlen(name) + 1, name);; } }; class Tiger : public Animal { public: char* ea.. C++ 복사생성자 복사생성자 란? 자기 자신을 인자로 받는 생성자 자기 자신의 객체로 자기 자신을 초기화한다. 복사생성자의 호출 시점 1. 먼저 생성한 객체를 나중에 생성하는 객체의 인자로 전다하는 경우 2. 함수의 인자로 객체가 전달되는경우 3. 함수의 반환 값으로 객체가 반환되는 경우 복사생성자 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 class AAA { public: int a; int b; AAA() {} ~AAA() {} AAA(int a, int b) { this->a = a; this->b = b; } AAA(AAA& aaa) { a = aaa.a; b = aaa.b; } }; void main() { AAA a1(10,20).. C++ Static Static 변수 Static 지역변수 같은 경우에는 함수가 끝나도 해당 변수가 소멸하지 않고 그대로 데이터를 유지하고 있는 특징이 있다. static은 Data 영역에 등록되어 프로그램이 시작하면 변수의 초기화가 진행된다. static 변수 변수를 static 선언하게 되면 내가 몇 개의 변수를 만들든 해당 변수는 오로지 한 개만 존재한다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 void numberAdd() { static int number; number++; cout C++ Const Const란 해당 변수, 함수, class를 상수화 시키겠다는 의미이다. const특징 const를 선언한 객체는 반드시 선언과 동시에 초기화를 해야 합니다. 만약 선언과 동시에 초기화를 하지 않으면 쓰레기 값이 들어가고 값 변경이 불가능해집니다. const변수 1 2 3 4 5 6 void main() { const int value = 10; value = 20; cout C++ 조건부 컴파일 조건부 컴파일 해진 조건에 따라서 코드의 컴파일 여부를 제어하는 전처리기. WinAPI용 코드를 리눅스에서 사용 제한하게 하는 것처럼 특정 플랫폼이나 OS에 특화된 코드를 구분하는 경우. 디버깅이나 테스트 코드 용도로 추가된 코드를 구분하는 경우. 조건부 컴파일사용하기(1) #if, #elif, #else, #endif 사용법은 평상시 사용하는 if문과 별로 크게 차이점은 없다. 다만 그 비교대상이 매크로일뿐이다. 일반 변수는 사용할수 없다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 #define value 5 void main() { #if value > 3 { cout C++ 매크로,매크로 함수 매크로 컴파일 이전에 정의하는 단순 치환이다. 매크로 선언방법 #define 이름 값 1 2 3 4 5 6 #define PI 3.14f void main() { cout 이전 1 2 3 4 5 다음