PL/C++(108)
-
stack, queue 클래스로 간단히 구현하기
1. 스택 2. 큐
2019.08.25 -
c++ 클래스 상속의 조건
반드시 기초 클래스와 유도 클래스간의 IS-A, HAS-A 관계가 성립이 되어야만 두 클래스는 상속 관계를 가지게 된다. A is a B가 성립이 될 때, A는 기초 클래스, B는 유도 클래스가 된다. 마찬가지로 A has a B가 성립이 될 때, A는 기초 클래스, B는 유도 클래스가 된다. IS-A 관계는 일반적으로 알고 있는 상속 코드이며, HAS-A 관계는 상속이 아닌 다른 관계로 표현할 수 있다. 상속으로 묶인 두 개의 클래스는 강한 연관성을 띤다. 만일 두 클래스는 상속 관계라면 유도 클래스는 자식 클래스의 속성을 모두 가져야만 한다. 하지만 포인터 변수로 기초 클래스를 소유하지 않은 유도 클래스를 표현할 수 있다 #include #include using namespace std; class..
2019.08.25 -
c++ 클래스 상속
기초 클래스를 부모 클래스, 유도 클래스를 자식 클래스라고 말한다 1. 유도 클래스 객체생성 과정에서 기초 클래스의 생성자는 반드시 호출된다 2. 유도 클래스의 생성자에서 기초 클래스의 생성자 호출을 명시하지 않으면, 기초 클래스의 void 생성자가 호출된다 3. 유도 클래스의 객체가 소멸될 때에는 유도 클래스의 소멸자가 실행되고 난 다음에 기초 클래스의 소멸자가 실행된다. 스택에 생성된 객체의 소멸순서는 생성순서와 반대다 그리고 클래스 상속에서 유도 클래스는 기본 클래스의 상속 속성을 정할 수 있다 1. public 상속은 기초 클래스의 속성을 그대로 가져온다 2. protected 상속은 protected 변수는 그대로 protected 속성으로, public 속성은 protected로 변환한다. 그..
2019.08.25 -
const 키워드 오버로딩
const 키워드는 멤버 변수가 변하지 않는 한에서 const 객체가 사용할 수 있는 함수다. const 키워드가 붙은 함수는 비 const와 const 모두가 사용된다. 하지만 분리하고 싶은 경우가 있는데 이때 const 키워드 오버로딩을 사용하면 된다 #include using namespace std; class SoSimple { private: int num; public: SoSimple(int n) : num(n) {} SoSimple& AddNum(int n) { num += n; return *this; } void SimpleFunc() { cout
2019.08.24 -
복사 생성자 호출 시점
1. 객체 선언 때, 객체 복사를 할 때 2. 참조 매개가 아닌 일반 복사일 때 3. 참조 반환이 아닌 일반 객체 반환일 때 #include using namespace std; class SoSimple { private: int num; public: SoSimple(int n) : num(n) { } SoSimple(const SoSimple ©) : num(copy.num) { cout
2019.08.24 -
c++에서의 struct
1. typedef를 생략할 수 있다. typedef로 재정의하지 않고 본연의 struct 이름을 자료형으로 사용할 수 있다 2. struct 안에 함수를 정의할 수 있다. struct 안의 함수는 기본적으로 inline 처리가 된다. 따라서 외부에다가 선언을 할 때는 반드시 inline 속성을 적용하려면 inline을 붙여줘야만 한다. class에서도 마찬가지로 적용된다 3. 구조체 안에서 사용하는 상수는 enum 혹은 이름 공간으로 처리한다 #include using namespace std; namespace SIMPLE_CONST { enum { SIZE = 10 }; } struct Simple { enum { SIZE = 10 }; int num; void showNum() { cout
2019.08.24