c++ 3

[C++ 클래스] 가상 함수

가상 함수 Virtual Function 가상 함수란 C++ 객체 지향 프로그래밍에서 상속으로 클래스의 특정 메서드가 재정의될 수 있음을 암시할 때 사용한다. 클래스의 멤버 함수 앞에 virtual 키워드를 붙임으로 해당 메서드는 가상 함수로 명할 수 있다. 다음 ClassA를 상속하는 ClassB를 정의하고 print_name() 메서드를 virtual 키워드와 함께 정의하여 파생클래스에서 재정의함을 암시한다. ClassB는 ClassA의 print_name() 메서드를 재정의 (오버라이드) 하여 해당 기능을 ClassB에 맞게 재구현하는 것이다. class ClassA { public: const char* _name; public: ClassA(const char* name) : _name(name..

C++/Advanced C++ 2021.01.29

[C++] 이동 시맨틱과 r-value 참조형

먼저 C++ 객체 지향 프로그래밍의 복사 생성자와 대입 연산자를 복습해보자. Requset.h Request 클래스는 멤버 변수로 동적으로 할당하는 address 포인터 변수와 정수형 변수를 가지고 있다. 이에 대해 올바른 복사 생성자와 일반 대입 연산자 오버 로딩을 다음과 같이 할 수 있다. class Request { private: char* _address; unsigned int _id; public: Request() : _address(nullptr), _id(0){} ~Request() { if (_address) delete[] _address; cout

C++/Advanced C++ 2021.01.28

[C++] l-value와 r-value

C++ 언어에서 l-value와 r-value 라 불리는 표현이 있다. l-value와 r-value는 연산 결과에 따른 대입 연산에서 비롯된다. l-value는 대입 연산에서 왼쪽과 오른쪽 모두 올 수 있는 표현이고 r-value는 대입 연산에서 오른쪽에만 올 수 있는 표현이다. int a = 23; int b = 12; // 둘 다 모두 가능 a = b; b = a; // 산술 연산 결과는 r-value a = 7 * 9; // l-value = r-value 7 * 9 = b; // error 위의 예시에서 7*9는 "연산 결과"로 오른쪽에만 올 수 있는 표현이다. C++에서 둘을 구분할 수 있는 방법은 l-value는 실제로 메모리 상에 존재하는 객체를 가리키는 표현이고 &연산을 통해 주소를 접근..

C++/Advanced C++ 2021.01.28