본문 바로가기

상속

상속 II(생성) 상속을 공부를 않한건 아니지만 솔직히 상당히 대충 하고 넘어갔다.ㅡ.ㅡ; 상속의 기본 이전에 포스팅 했던거 같이 무엇인가를 물려 받는 것이다. 상속이 나온 이유는 프로그램 재 사용을 높이기 위한 방법이다. 기본적으로 상속에는 접근제어제가 총 3개가 되는데 private, public 외에 protected가 존재한다. 이는 상속된 파생 클래스에서는 접근을 허용하지만 외부 접근은 허용하지 않겠다는 의미이다. 또한 private 상속은 말이 상속이지 상속 않한다는 다름 없다-_-;; 예를 들어서... class a { private: int a; }; class b : public a { ....... }; 로 상속을 했다고 치면 b는 a의 private 멤버인 a에 접근을 할수 없다. ㅡ_ㅡ;; 그렇다고 .. 더보기
접근 권한자 접근 권한자 C++에서 접근 권한자는 3가지 종류가 있다. 1.private 2.protected 3.public 접근 권한은 1에서 3번으로 갈수록 권한의 폭이 넓어진다. 상속시에 기제하는 접근 권한에 의해서 Base class의 멤버 들의 접근 권한이 변경 되게 된다. 예를 들어서 protected 상속을 받게 되면 protected 보다 넓은 권한은 모두 protected로 변경 되며 private는 접근 불가 상태가 된다. 이때 private 로 상속을 받았을때도 Base class 의 private 멤버는 여전히 접근이 불가하다. 더보기
상속 & 멤버이니셜라이저 멤버 이니셜라이저 Base class 의 초기화를 위해서 원하는 생성자 함수를 호출할수 있게 해주는 것이다. 이때 Base class에서는 생성자 함수 오버라이딩 함수가 반드시 존재 하여야한다. #include using std::endl; using std::cout; class Person { int age; char name[20]; public: int GetAge() const { return age; } const char* GetName() const { return name; } Person(int _age=1, char* _name="noname") { age = _age; strcpy(name, _name); } }; class Student:public Person { char maj.. 더보기
객체 포인터! 상속된 객체와 포인터 관계 상속된 클래스의 포인터 변수로 상속 받은 클래스의 객체의 주소를 담을수가 있다. 이는 is a 관계에 의거하여 가능하다고..... #include //using std::endl; //using std::cout; class A{ void a() { cout 더보기
상속이란!? 콜 간단하게 상속 부모에게 특성을 자식이 물려 받는거 처럼 class간의 특성을 물려 받는것을 말한다. 부모 class를 Base class라 하며, 자식 class 를 Derived class라 한다. 상속을 할때는 2개이상의 클래스를 가지고 공통 부분을 뽑은 다음 추상화 하여 하나의 클래스로 만들고 (is a 관계 or has a 관계) 각 각의 클래스는 고유한 특성만을 가지고 상속을 받는다. 형식 Derived class의 객체를 생성하게 되면 호출은 Derived class 의 생성자 함수를 먼저 호출을 하지만 실행은 Base class 의 생성자 함수 실행을 하고, Derived class 의 생성자를.. 더보기