2019/10/24

4

C++ private상속, protected 상속을 정리하며

private 상속이나 protected 상속이 됐을 때 기초 클래스의 멤버들은 private나 protected가 될 겁니다. 이 둘의 공통점은 외부에서 접근이 불가능하다는 건데 public으로 사용하고 싶은 경우도 있을 겁니다. 데이터 은닉에서 했던 것과 비슷한 방법 #define _CRT_SECURE_NO_WARNINGS #include #include using namespace std; class Student : private valarray { public: Student() : valarray(3) { //멤버 초기자 리스트로 초기화 } int Size() { return valarray::size(); } }; int main(void) { Student stu = Student(); c..

프로그래밍/C++ 2019.10.24 Plorence

C++ protected 상속

protected 상속은 private 상속과 사용방법, 의미면에서 큰 차이는 없습니다. protected 상속은 기초 클래스의 public 멤버와 protected멤버가 파생 클래스에서 protected멤버로 됩니다 private 상속과 마찬가지로 클래스 내에서는 사용이 가능하지만 외부에서는 불가능합니다. class Student : protected valarray { public: Student() : valarray(3) { //멤버 초기자 리스트로 초기화 } }; protected상속은 파생 클래스보다는 파생클로스로 부터 또 다른 클래스를 파생시킬 때 드러납니다. 즉 3세대에서 접근이 가능하게 되는데 3세대까지 파생할거라고 설계를 안 했을 경우에는 별 필요 없습니다.

프로그래밍/C++ 2019.10.24 Plorence

C++ private 상속

private 상속은 기초 클래스의 public 멤버와 protected 멤버가 파생 클래스의 private 멤버가 됩니다. public 상속도 기초 클래스의 public 멤버와 protected 멤버가 파생 클래스의 public 멤버가 된 겁니다. has-a 관계를 모델링하는 방법 중 나머지 한 가지의 방법이 private 상속입니다. 파생 클래스는 기초 클래스의 인터페이스를 상속하는 것이 is-a관계의 역할이었지만 private상속은 파생 클래스가 기초 클래스의 인터페이스를 상속하지 않습니다. 상속이 안 되는 것은 has-a관계의 역할입니다. 컴포지션(컨테인먼트)과 다른 점 컨테인먼트는 객체를 이름이 있는 멤버 객체로 클래스에 추가하지만 private상속은 객체를 이름이 없는 상속된 객체로 클래스에 ..

프로그래밍/C++ 2019.10.24 Plorence

C++ 멤버 함수(생성자, 파괴자, 연산자 오버로딩 등)의 특성(표로 요약)

함수 상속 멤버 또는 프렌드 디폴트로 생성 가상으로 선언 리턴형 생성자 X 멤버 O X X 파괴자 X 멤버 O O X = X 멤버 O O O & O 둘 중 하나 O O O 변환 O 멤버 X O X () O 멤버 X O O [] O 멤버 X O O -> O 멤버 X O O op= O 둘 중 하나 X O O new O static 멤버 X X void * delete O static 멤버 X X void 기타 연산자 O 둘 중 하나 X O O 기타 멤버 O 멤버 X O O 프렌드 X 프렌드 X X O op=는 +=,*=와같은 복합 대입 연산자들을 말합니다.

프로그래밍/C++ 2019.10.24 Plorence