C++ (29) 썸네일형 리스트형 [C++] 순수 가상 클래스(Pure virtual class)와 순수 가상 함수 순수 가상 클래스란? 순수 가상 클래스(Pure virtual class)는 순수 가상 함수(Pure virtual function)를 멤버로 가진 클래스이다. 순수 가상 함수는 선언은 지금 하지만 나중에 정의하도록 놔둔 함수이다. 따라서 함수 선언 시 '=0'이라는 표시를 한다. 함수에 '=0'과 같은 표현은 어색하지만 하나의 표시라고 생각하자. virtual int getNum() = 0; 예제 #include using namespace std; //부모 클래스 class FirstClass { public: FirstClass() { cout [C++] 가상 함수(Virtual function)와 소멸자 가상화 가상 함수란? 가상 함수(Virtual function)는 virtual 예약어를 붙여서 선언한 메서드이다. 가상 함수는 과거의 정의가 완전히 무시된다는 것이 특징이다. 사용 방법은 다음과 같다. virtual 반환형식 메서드이름 함수앞에 virtual 예약어만 붙여주면 된다. #include using namespace std; //부모 클래스 class PClass { public: //가상 함수 virtual void printNum() { cout [C++] 메소드 오버라이드(Override) 메소드 오버라이드란? 메소드 오버라이드는 객체 지향 프로그래밍에서 자식 클래스(파생 클래스)가 부모 크래스에 정의된 메소드를 재정의하는 것이다. 사전적 의미 : (직권을 이용하여 결정·명령 등을) 기각[무시]하다.(출처 : 네이버 사전) 메소드를 재정의하면 기존의 것이 무시된다. #include using namespace std; //부모 클래스 class PClass { public: int getNum() { return num; } void setNum(int param) { num = param; } private: int num = 0; }; //파생 클래스 class CClass : public PClass { public: void setNum(int param) { //num이 0과 10.. [C++] 생성자 상속 생성자를 다중정의 할 수 있다. 상속관계에서 파생 클래스객체를 생성하면 부모 클래스의 생성자도 호출 되는데 부모 클래스에서 생성자를 다중 정의하면 어떤 생성자가 호출될까? #include using namespace std; //부모 클래스 class PClass { public: PClass() { cout [C++] 접근 제어 지시자(public, protected, private) 접근 제어 지시자란? 접근 제어 지시자(Access Control Indicator)는 클래스 접근을 제어하는 지시자이다. 지사자 설명 public 멤버에 관한 모든 외부 접근이 허용 protected 상속 관계에 있는 파생 클래스에서의 접근만 허용 private 모든 접근 차단 별도로 접근 제어 지시자가 없으면 기본 접근 제어 지시자는 private이다. [C++] 상속(Inheritance) 상속이란? 상속(Inheritance)은 객체 단위 코드를 재사용하는 방법이며, 이러한 재사용을 통해 기능적 확장이나 개선을 할 수 있다. 기본 작성 문법은 다음과 같다. class 클래스이름 : 접근제어지시자 부모클래스이름 예제 코드를 통해서 상속을 어떻게 사용하고 어떤 식으로 동작하는지 알아보자. #include using namespace std; //부모클래스 class PClass { public: PClass() { cout [C++] operator 배열 연산자와 단항 증감 연산자 배열 연산자도 다중 정의할 수 있다. #include using namespace std; class TestClass { public: TestClass() {} ~TestClass() { delete num; } //변환 생성자 TestClass(int size) { num = new int[size]; memset(num, 0, sizeof(int) * size); } int operator[](int index) const { return num[index]; } int& operator[](int index) { return num[index]; } private: int *num = nullptr; }; void TestFunc(const TestClass& a) { cout [C++] operator 복합 대입 연산자와 이동 대입 연산자 복합 대입 연산자와 마찬가지로 복합 대입 연산도 가능하도록 할 수 있다. #include using namespace std; class TestClass { public: TestClass() {} ~TestClass() {} //변환 생성자 TestClass(int param) { num = new int; *num = param; } //형변환 허용 operator int() { return *num; } //복합 대입 연산자 TestClass& operator+=(const TestClass& ref) { //현재 값 int* newNum = new int(*num); //누적 값 *newNum += *ref.num; //기존 값 지우고 새 메모리 대체 delete num; num = newNum.. 이전 1 2 3 4 다음