c++계승
클래스 를 만 들 때 새로운 데이터 구성원 과 구성원 함 수 를 다시 만 들 필요 가 없습니다.새로운 클래스 를 지정 하여 기 존 클래스 의 구성원 을 계승 하면 됩 니 다.이 기 존의 종 류 는 기본 류 라 고 부 르 고,새로 만 든 종 류 는 파생 류 라 고 부른다.
상속 은 is a 관 계 를 대표 한다.예 를 들 어 포유동물 은 동물 이 고 개 는 포유동물 이기 때문에 개 는 동물 이다.
기류&파생 류
한 종 류 는 여러 종류 에서 파생 될 수 있다.이것 은 여러 종류 에서 데이터 와 함 수 를 계승 할 수 있다 는 것 을 의미한다.파생 클래스 를 정의 합 니 다.우 리 는 하나의 파생 목록 을 사용 하여 기본 클래스 를 지정 합 니 다.클래스 파생 목록 은 하나 이상 의 기본 클래스 로 명명 되 며,형식 은 다음 과 같 습 니 다.
class derived-class: access-specifier base-class
그 중에서 액세스 수정자 access-specifier 는 Public,proctected 또는 private 중 하나 이 며,base-class 는 이전에 정 의 된 클래스 의 이름 입 니 다.접근 수정자 access-specifier 를 사용 하지 않 으 면 기본 값 은 private 입 니 다.기본 Shape 가 있다 고 가정 하면 Rectangle 은 파생 류 입 니 다.다음 과 같 습 니 다.
#include <iostream>
using namespace std;
//
class Shape
{
public:
void setWidth(int w)
{
width = w;
}
void setHeight(int h)
{
height = h;
}
protected:
int width;
int height;
};
//
class Rectangle: public Shape
{
public:
int getArea()
{
return (width * height);
}
};
int main(void)
{
Rectangle Rect;
Rect.setWidth(5);
Rect.setHeight(7);
//
cout << "Total area: " << Rect.getArea() << endl;
return 0;
}
위의 코드 가 컴 파일 되 고 실 행 될 때 다음 과 같은 결 과 를 얻 을 수 있 습 니 다.Total area: 35
접근 제어 및 계승
파생 류 는 기본 클래스 의 모든 비 개인 구성원 을 방문 할 수 있다.따라서 기본 구성원 이 파생 클래스 의 구성원 함수 에 접근 하지 않 으 려 면 기본 클래스 에서 private 로 성명 해 야 합 니 다.
저 희 는 방문 권한 에 따라 서로 다른 방문 유형 을 정리 할 수 있 습 니 다.다음 과 같 습 니 다.
방문 하 다.
public
protected
private
동류
yes
yes
yes
파생 류
yes
yes
no
외부 클래스
yes
no
no
하나의 파생 류 는 모든 기본 적 인 방법 을 계승 하 였 으 나,아래 의 상황 은 제외한다.
4.567917.기본 클래스 의 구조 함수,석조 함수 와 복사 구조 함수4.567917.기본 클래스 의 과부하 연산 자4.567917.기본 클래스 의 우 원 함수계승 유형
하나의 클래스 가 기본 클래스 에서 파생 되면 이 기본 클래스 는 Public,proctected 또는 private 의 몇 가지 유형 으로 계승 할 수 있다.계승 유형 은 위 에서 설명 한 방문 수정자 access-specifier 를 통 해 지정 합 니 다.
저 희 는 proctected 나 private 상속 을 거의 사용 하지 않 습 니 다.보통 Public 상속 을 사용 합 니 다.서로 다른 유형의 계승 을 사용 할 때 다음 과 같은 몇 가지 규칙 을 따른다.
4.567917.공유 상속(Public):하나의 유형 이 공유 기류 에서 파생 될 때 기류 의 공유 구성원 도 파생 류 의 공유 구성원 이 고 기류 의 보호 구성원 도 파생 류 의 보호 구성원 이다.기류 의 사유 구성원 은 파생 류 에 직접 방문 할 수 없 지만 기류 의 공유 와 보호 구성원 을 호출 하여 방문 할 수 있다4.567917.보호 계승(proctected):하나의 파생 이 기 류 를 보호 할 때 기 류 의 공유 와 보호 구성원 은 파생 류 의 보호 구성원 이 될 것 이다4.567917.사유 상속(private):파생 이기 적 이 고 기본 적 인 유형 이 있 을 때 기본 적 인 공유 와 보호 구성원 은 파생 적 인 사유 구성원 이 될 것 이다.
다 상속
다 상속 즉 하나의 자 류 는 여러 개의 부 류 를 가 질 수 있 고 여러 개의 부 류 의 특성 을 계승 했다.
C++클래스 는 여러 클래스 에서 구성원 을 계승 할 수 있 습 니 다.문법 은 다음 과 같 습 니 다.
class < >:< 1>< 1>,< 2>< 2>,…
{
< >
};
그 중에서 방문 수정자 계승 방식 은 Public,proctected 또는 private 중의 하나 로 모든 기본 클래스 를 수식 하고 각 기본 클래스 간 에 쉼표 로 구분 합 니 다.위 와 같 습 니 다.지금 우리 함께 아래 의 실례 를 봅 시다.
#include <iostream>
using namespace std;
// Shape
class Shape
{
public:
void setWidth(int w)
{
width = w;
}
void setHeight(int h)
{
height = h;
}
protected:
int width;
int height;
};
// PaintCost
class PaintCost
{
public:
int getCost(int area)
{
return area * 70;
}
};
//
class Rectangle: public Shape, public PaintCost
{
public:
int getArea()
{
return (width * height);
}
};
int main(void)
{
Rectangle Rect;
int area;
Rect.setWidth(5);
Rect.setHeight(7);
area = Rect.getArea();
//
cout << "Total area: " << Rect.getArea() << endl;
//
cout << "Total paint cost: $" << Rect.getCost(area) << endl;
return 0;
}
위의 코드 가 컴 파일 되 고 실 행 될 때 다음 과 같은 결 과 를 얻 을 수 있 습 니 다.Total area: 35
Total paint cost: $2450
이상 은 c++상속 에 대한 상세 한 내용 입 니 다.c++상속 에 관 한 자 료 는 저희 의 다른 관련 글 을 주목 해 주 십시오!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
HDU 원활 공사 & & 원활 공사 (차 트 법)모 성 은 도시 의 교통 상황 을 조사 하여 기 존의 도시 도로 통계 표를 얻 었 고 표 에는 모든 도로 가 직접 연 결 된 도시 가 열거 되 어 있다.성 정부의 '원활 한 공사' 목 표 는 성 전체의 어느 두 도시...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.