지금 현재 Overload 와 Override 에 대해서 공부중인데요 ;
Overload 는 중첩이란뜻으로 이름은 같으나 성질은 다르게 사용가능하다는..
그러니까
int sum( int a, int b);
float sum( float a, float b);
뭐 이런식으로
만약 sum ( 1,2 ) 를 넣어주면 저절로 인트형 함수로 넘어가고
sum( 1.2, 3.4) 를 넣어주면 플롯 형 함수로 넘어가고 이런거로 이해하고있는데요 .
Override 는 아직 잘 개념이 안잡혀서요 ..
소스를 보면 상속과 관련되어서 설명이 되어있는듯한데요 .
대충 이런소스예요.
Class A()
{
public:
show();
};
Class A_a : public A
{
Public:
show();
};
A::show()
{
return n;
}
A_a::show()
{
cout << \" 보여드리죠 \" << n ;
}
// 대충적었습니다 간략하게
.. 그럼 Overrive란.. 역시 오버로드처럼 함수명은 같이 사용하는데
상속하는데에 있어서 파생클래스에서 상위클래스의 멤버함수를 사용해야하나
그 멤버함수의 내용을 수정해주어야 할때 오버라이드를 쓰는건가요 ?;
만약 이런거라면 그냥 애초에 파생클래스에서 그에 필요한 멤버함수를 따로 만들어주는것과
뭐가 다른걸까요? ㅠㅠ
Override ... 이해가안되요 ㅠㅠ
영어뜻 그대로 번복이다. 요즘엔 상속과 함께 까이고 있는 오버라이드
넌 멤버 함수 다 따로 만들면 if else if else 로 하게?? 상속을 하면 결국 C++ 에서 가상함수테이블을 통하여 구현하는데 그거 땜시 public 상속일때, BaseClass *Ptr = new InheritanceClass 이케 했을때 Ptr 의 멤버함수 호출하면 Inheritance 의 함수가 호출되는거여
결국 한 마디로 동일한 콘센트에 전기기구 바꿔끼워넣는것과 비슷하다고 생각해라 그냥
virtual 안배웟냐?
다형성을 배워봐 그럼 오버라이딩의 진면목을 보게 될테니까
virtual 부터 이해를 해야하구낭...;; 번복이라함은 똑같은걸 쓰는거자낭. 근데 내가 대충 위에 적은대로라면; 저건 오버라이딩이아니라 오버로딩과 같은게 아니야? ㅠㅠ;; 멤버함수명을 번복했으나 내용은 약간의 차이가 생겨서 두 멤버함수의 내용을 다 정의해줬으니까.. 그래서 따로만들어주는것과 머가다른걸까 물어본거예요;;
스캇빠돌이횽// 그럼 동일한 콘센트는 위에서보면 show() 이고 전기기구는 class A 와 class A_a 라는거양?
이거나 먼저 읽고 하자
http://www.winapi.co.kr/clec/cpp3/30-1-2.htm
대충 설명하자면 두개의 같은이름의 함수를 선언했을때 내가 쓰고자 하는 함수를 인자나 그런걸로 명시를 할수 있는게 오버로딩이고 오버라이딩은 내가 동적할당해주는 할당타입으로 묵시적으로 컴파일러에서 결정되지 그렇기 때문에 순수가상함수가 아닌 묵시적인 오버라이딩을 탄 함수를 호출하기위해선 ::으로 명시를 따로 해줘야 하고
소스없이 설명해줄라 하니 애매하근 흠좀무
고마워횽. 그부분내용이었군아. virtual에 대해알게되니까 이해가 빠르네;;.. 독학중인 꼬꼬마니까 약간 너그러이이해해줘요;;
오버라이드는 상위클래스의 함수를 내부처리구조가 다르게 재정의하는 것임. 외부에서 바라보는 형식(이름, 인자, 반환형)은 똑같고. 언제 써야 할지는 다른 모든것과 마찬가지로 스스로 깨우쳐야 함. 따로 만들어주는 것과 다른점은, 상위 클래스 형식으로 선언하고 하위 클래스 형식으로 정의한 인스턴스에서 하위 클래스에서 오버라이드한 함수를 사용하게 된다는것임. 역시 용도는 스스로 깨우쳐야 함.
다형성에서 오버라이딩의 진면목을 이해하면 c++이 즐거워질거삼 ㅋㅋ
햏햏했횽도 감사하연. ㅠㅠ 맵돌이횽도계셨네용 ㅎ 감사합니당 ^^ 맵돌이횽이 마지막으로 내질문에대해 깔끔하게 정리해줘서 이해가 꾀 된거같아요 이제 스스로 꺠우치러 다시 고고힝할꼐요 ㅠ 늘 프갤에 감사하는 꼬꼬마 이였음니다 ㅠ
예젤 하나 적어주고 싶은데 잠깐 적다보니 넘 길다.. 책에 있는 예제로 공부하시라..
맵돌이횽 나도 오버라이딩 개념 쌔워보고 싶어ㅠ