(수근수근)
[C++] 상속 공부 본문
회사에 들어오니 C++소스를 봐야했다..
주언어도 있다고 하기 애매한 상황에서 두가지 언어를 배운다는 것은 좋지만,
이도 저도 안될까봐 무섭기도 하다~
하지만 언어에 대한 두려움은 갖지말자!
출처 : https://velog.io/@underlier12/C-04-%ED%81%B4%EB%9E%98%EC%8A%A4-%EC%83%81%EC%86%8D-vmk62xgs4p
[C 와 C++ 의 비교]
C언어 | C++언어 | |
패러다임 | 절차지향적 | 객체지향언어(멀티패러다임언어) |
개발방식 | 하향식 접근방법 | 상향식 접근방법 |
문법적 | STRCUT(함수를 가질 수 있다.) | CLASS와 STRUCT |
접근지정자가 없다 | 접근지정자 O ( private / public ) | |
표준문자열 자료형 제공(String s) | char arr[SIZE] |
[ 상속 Inheritance ]
상속의 사용
자식 클래스는 파생 클래스(Derived Class)라고도 불리며 부모 클래스의 모든 속성을 물려받는다. 자식 클래스는 콜론(:)을 활용해 부모 클래스와 연결 된다.
파생클래스 (derived class)
기존의 만들어져있는 클래스를 상속받아 만들어지는 클래스
기반클래스(based class)
상속받지 않고 뼈대가 되는 클래스
[상속접근자 지정]
https://thrillfighter.tistory.com/531
상속 지정 public / private / protected 에 대한 설명이 명료하게 잘 되어있음.
설명 + 코드로 잘 되어있다.
[상속 오버라이딩 (Inheritance Overriding)]
* 오버로딩 : 인자의 자료형, 인자의 수가 다른 함수를 같은 이름으로 여러번 중복 정의
오버라이딩 (Overriding, 재정의) : 부모클래스와 자식클래스 상속에서 이미 정의된 함수를 같은이름으로 재정의
범위 지정 연산자(::) : 범위지정 연산자를 이용하면 부모의 함수를 호출 가능하다!!
class B : public A {
public:
void over() { A::over(); cout << "B 클래스의 over 함수 호출!" << endl; }
};
출처: https://blog.hexabrain.net/175 [끝나지 않는 프로그래밍 일기]
결과
A over()함수 호출
B over()함수 호출
[가상함수(Virtual Function)]
출처 : https://blog.hexabrain.net/175
왜 필요할까?
C++컴파일러가 실제로 가리키는 객체의 자료형이 기준이 아니라 포인터 변수를 자료형의 기준으로
판단한다 객체의 자료형에 따라 멤버함수가 호출되기 하기 위해 virtual 키워드를 함수 선언문에 붙인다.
가상함수가 선언이 되면 실제로 가리키는 객체에 따라 실행되는 코드가 달라진다.
[순수 가상 함수(Pure Virtual Function)]
순수가상함수 : 선언만 있고 정의는 없는 것으로 반드시!! 자식함수에서 재정의 해야한다!
함수 뒤에 '=0' 을 붙여주어야한다!
ex) virtual void func() =0
추상클래스 (abstract class) : 순수가상함수를 포함하는 클래스
* 추상클래스로 객체생성가능 ? NO! ∵정의 되어있지 않은 객체를 만드는 것은 의미가 없다!
* 추상클래스의 이점은? 자손들이 반드시 정의 되어야하기 떄문에 재정의의 방향성을 제시
[다중 상속(Multiple Inheritance)]
다중상속 : 둘 이상의 클래스를 동시에 상속하는 것
* 자바는 다중상속을 지원하지 않는다!
∵ 같은 변수나, 함수를 가지고 있는 경우 충돌이 생기기 떄문에. C++은 개발자에게 더 자유도를 높혔다.
하지만
C++도 다중상속을 권하지 않는다. 다이아몬드 상속은 여러 문제를 일으킬 수 있기 때문에.
'C++' 카테고리의 다른 글
[C++] 기초 관련 용어 (0) | 2020.05.18 |
---|---|
Linking / Linker (0) | 2020.05.15 |
암호화 알고리즘 AES-256 (0) | 2020.05.07 |
[C++]선형자료구조 - vector (0) | 2020.04.06 |
HashMap 자료구조 study (0) | 2020.04.06 |
Comments