freeseaboy 님의 멋있어 지려 노력하는 블로그
(베이직 코스)C++ 상속 에 대해 알아보자 본문
자 오늘은 C++ 다중상속 및 단일 그외 오버로딩에 대해 리뷰 및 공부를 하겠다.
난이도가 지금보다 +1~2정도 오르니 마음의 준비를 하자.
그리고 예제코드는 매우 기초니 많이 많이 연습을 해야 될것이다.
자 그럼 바로 동영상을 시청해보자.
난이도가 있으니 계속 영상 분량이 커지고 있다 ㅋ
매번 말하지만 코드랑 스크립트는 아래에 업로드 해놓겠다..
!!!긴급!!!
알수없는 이유로 동영상이 차단되어 우회 대피소
N기업 블로그로 링크 걸어 두었습니다.
https://blog.naver.com/iwseo7114/223637180320
(베이직 코스)C++ 상속 에 대해 알아보자
자 오늘은 C++ 다중상속 및 단일 그외 오버로딩에 대해 리뷰 및 공부를 하겠다. 난이도가 지금보다 +1~2정...
blog.naver.com
#include <iostream>
class revMinus{
private:
int iNumber;
public:
revMinus(int arg = 0) : iNumber(arg){};
revMinus operator+(const revMinus& obj){
return revMinus(iNumber - obj.iNumber);
}
void getShowValue(void){
printf("%d\n",iNumber);
}
};
int main(void){
revMinus a;
revMinus b(100);
revMinus c(-99);
revMinus showResult = a + b + c;
showResult.getShowValue();
}
/*2024.10.28
#include <iostream>
class parent{
public:
parent(){
printf("parent\n");
}
};
class power{
public:
power(){
printf("i give you power\n");
}
};
class children : public parent,public power{
public:
children(){
printf("Children\n");
}
};
class godBaby : public children{
public:
godBaby(){
printf("I'm god!!!!!!!!!!\n");
}
};
int main(void){
godBaby newgodBaby;
godBaby* pnewgodBaby = new godBaby();
//parent showParent;
//parent* pshowParent = new parent();
}
#include <iostream>
#include <cstdio>
class MotorK{
public:
MotorK(){};
void engine(void){
printf("KIA\n");
}
};
class MotorH{
public:
//MotorH(){};
void engine(void){
printf("HYNDAI\n");
}
};
class customer : public MotorK,public MotorH{
public:
customer(){
//this->engine(); 이건안됨 ㅠㅠ
MotorH::engine();
MotorK::engine();
}
};
int main(void){
customer* myCustomer = new customer();
}
#include <iostream>
class parent{
public:
parent(){
printf("Dont tell me die\n");
}
void parentMoney(void){
printf("$ 100 000 000 000");
}
};
class childA : public virtual parent{
public:
childA(){};
};
class childB : public virtual parent{
public:
childB(){};
};
class Baby : public childA,public childB{
public:
Baby(){};
};
int main(void){
Baby* pBaby = new Baby();
pBaby->parentMoney();
}
####################################################
자 오늘할 Study with us
할공부는
- 다중 상속.
- 객체 연산
두가지를 같이 공부해 볼게요..
자시작 ~ 한 교육시간은 여태껏 찍으면 1시간 네트워크는 한 ㅇ어제 2시간 기록찍었는데...
C++ 길면 1시30분 될거같아요 ....
자 시작!!
multiple inheritance = 다중 상속
여러개를 상속 한다는의미겠죠?
즉
재산이라 표현할게요
재산을 물려 받는 사람은 상속인 이라고 하고
피상속사자는 물려 주는 사람이래요
-------------------
상속자 or 피상속인
-------------------
정의된 두개 이상의 클래스 내용으
Base Child
원본 -> 변이
원본이 여러개가 있을수 있다는거에요..
단일 상속 vs 다중 상속
우리는 단일 상속을 쉽게 알죠
근데 다중 상속은 좀 낯설죠?
즉===결론
다중상속은 베이스 클래스가 여러개를 상속 받는 매카니즘이다!!!
다중상속 및 상속 합쳐서 4가지정도가 있다고 합니다
자 해볼꺼...
1.단일상속 클리어
2.다중 상속 클리어
3.다중 경로 상속 클리어.
4.다이아몬드 상속. 클리어
- 직접명시 클리어
- 가상화
객체 연산!1
왠지 어려울거 같은데... 일단 해보죠
객체 연산은 = 일반 객체 끼리 연산자를 이용해서 연산을 하는것..
존재하지않는 수 허수!.책이좀 이상함..
사실 객체연산은 연산자 오버로딩을 말하느거같은데...갑자기 허수객체니 연산이니 이런소리를 ...이상해요..
우리는 허수건 뭐건 나발이건 필요없고
연산자 오버로딩 == 객체 연산
이거를 하겠습니다..
연산자 오버로딩은!!!
객체를 OBJECT를 대상으로 연산을 하는것이래요!
연산자를 재정의 Define .....정의
- -> +
- -> *
쉽게 코드해킹 같은거죠
우리가 아는 수학의 정의를 완전히 뒤바꿔놓는 기술이죠...물론 여기에서만...
중요한거!
연산자 오버로딩은 연산자 함수의 재정의이다!!!
-
+{
djalksdj
};
재정의 이런뜻이에요일반 맴버랑 다르게
연산자 오버로딩은 함수이름이 고정되어있다
뭘로?operatior 고정되어있데요
그리고 오버로딩할 연산자를 함수 이름 옆에 명시해야된다.
MethodName ReturnV operator [연산자](target obj)
- > +
+ ----> -
생성자는 리턴을 못한다..다만
특수한 경우는 한다.이건 C++ 비야네스트룹스트롭 형님께 따져라...
특수한경우
연산자 오버로딩 블록에서만 특수하게 리턴을 한다...
어이가없네...
이래서 난이도 급 증가하나봐...어찌됫든
무식하지만 너무 알려고 하지말고
외우자 이런건 외우는거다
객체연산은 클래스끼리 연산을 하는 거다...
오늘의교훈
상당히 C++ 짜증나고 혼란스럽고 멘탈 나간다..근데 할만하다...
아직 헬게이트 입구도 오지않았다....정신 차리자..아멘.
최종 리뷰....
단일상속은 문제가 별로 없지만
다중 상속은 위험이 상당히 많이 도사리고 있고 다이아몬드 경우는 정말 머리가 아플수도 있다...
그러니 다른 객체 지향 언어 처럼 무리하게 막 남용해서 상속을 하지말자....결국 그렇게 해봤자
당신만 힘들 것이다...왜냐 우린 당신 코드에 관심이 없다..돈에는 있을수도 있지만..
연산자 오버로딩을 배웠는데 상당히 고정관념을 갖고 보면 절대 이해하기 어려울거다..
그래서 생각의 읽기전용 상태를 수정 상태로 전환하고 보도록 해라...
그럼 나처럼 조금이나마 이해가 되겠지..
다만 몇일지나면 또 까먹겠지..ㅋㅋ
이상으로 감사합니다.
####################################################

'컴퓨터 & 서버 > C++' 카테고리의 다른 글
(베이직 코스)C++ 템플릿 에 대해 알아보자 (0) | 2024.11.03 |
---|---|
(베이직 코스)C++ 예외 에 대해 알아보자 (1) | 2024.10.31 |
(베이직 코스)C++ 추상 및 가상 에 대해 알아보자 (6) | 2024.10.27 |
(베이직 코스)C++ 소멸자 에 대해 알아보자 (2) | 2024.10.26 |
(베이직 코스)C++ 이름 공간에 대해 알아보자 (0) | 2024.10.25 |