본문 바로가기

프로그래밍/C ++

[C++] 클래스

파생 클래스 선언 형식

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