파생 클래스 선언 형식
class DClassName : visibilitySpec BClassName { //DClassName: 파생 클래스, BClassName: 기초클래스
visibilitySpec_1: // 가시성 지시어
데이터 멤버 또는 멤버함수 리스트;
visibilitySpec_1:
데이터 멤버 또는 멤버함수 리스트;
...
};
class Person{
string name;
public:
void setName(cons string &n);
const string getName() const;
void print() const;
};
class Student : public Person {
string school;
public:
void setSchool(const string &s) {school = s;}
const string getSchool() const { return school; }
void print() const {
//재정의
Person::print();
cout << " goes to " << school;
};
가시성의 상속
visibilitySpec: 기초 클래스로부터 상속된 멤버가 파생 클래스의 멤버로서 가지게 되는 가시성을 제어함
- private, protected, public
class를 선언할 때는 private이 디폴트, struct를 선언할 때는 public이 디폴트.
visibilitySpec에 제시된 것이 가시성의 상한이 되도록 제한됨
가시성 상속 지시어 | B의 public 멤버는 | B의 protected 멤버는 |
class D1: private B { }; |
D1의 private 멤버 | D1의 private 멤버 |
class D2: protected B { }; |
D2의 protected 멤버 | D2의 protected 멤버 |
class D3: public B { }; |
D3의 public 멤버 | D3의 public 멤버 |
파생클래스의 생성자
선언 형식: 파생 클래스의 소멸자만 정의하면 기초 클래스의 소멸자는 자동적으로 호출된다.
실행 순서: 파생 클래스 소멸자 -> 기초 클래스 소멸자
// DClassName(dArgsList) : BClassName(bArgsList){
// 파생 클래스 생성자에서 추가되는 사항
// }
class Student : public Person {
string school;
public:
Student(const string& n, const string& s) : Person(n) {
cout << "Student의 생성자" << endl;
school = s ;
}
~Student(){
cout << "Student의 소멸자" << endl;
}
};
반응형
'프로그래밍 > C ++' 카테고리의 다른 글
[C++] 연산자 다중 정의 (0) | 2024.12.04 |
---|---|
[C++]생성자 (2) | 2024.12.04 |
[C++] 객체 (object) (0) | 2024.12.04 |
[C++] 함수 (0) | 2024.12.03 |
[C++] 자료형 (묵시적형변환) (0) | 2024.12.03 |