본문 바로가기

전체 글

(69)
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
C++ 함수포인터 함수포인터 함수의 주소를 저장하는 포인터 우리가 항상 사용해 왔던 함수도 사실 주소값이 해당 함수의 내용을 가르키고있는것이다. 즉 함수의 이름은 포인터이다. 1 2 3 4 5 void Function() { } void main() { cout
C++ 연산자 오버로딩 주의사항 연산자 오버 로딩은 프로그래밍이 지원하는 연산자의 기능 말고도 사용자가 원하는 기능을 만들 수 있는 좋은 기능이나 사용할 대 주의사항이 존재한다. 본래의 의도를 벗어난 형태의 연산자 오버 로딩은 좋지 않다. 연산자 오버 로딩은 잘못 사용하면 프로그램을 복잡하고, 이해하기 어렵게 만든다. 10+20은 30이다. pos1+pos2의 값은? 보통의 사용자라면 pos1과 pos2의 값을 더한 뒤 반환하는 기능이라고 생각할 것이다. 하지만 우리의 기대를 저버리고 pos1의 값을 pos2의 값만큼 증가시킨다든지 아니면 pos1을 pos2의 대입해 버린다든지 전혀 생각하지 못한 결과가 나올 수 있다. 때문에 연산자를 오버 로딩 할 때에는 연산자의 본래 의도를 가급적 충실히 반영해서 연산자의 오버 로딩으로 인해서 발생..