오버라이딩

[Basic C++] #18_오버라이딩의 특수한 경우 여섯 번째, 일반 메소드의 오버라이딩 C++ 개발에서 오버라이딩을 사용 시 주의할 점에 대해서 알아보겠습니다. "전문가를 위한 C"의 9 항목, "클래스 상속 활용 테크닉"에 해당하는 내용입니다. "virtual"을 사용하지 않을 경우 class Super { public: void go() {cout
[Basic C++] #17_오버라이딩의 특수한 경우 네 번째, 디폴트 인자 값 C++ 개발에서 오버라이딩을 사용 시 주의할 점에 대해서 알아보겠습니다. "전문가를 위한 C"의 9 항목, "클래스 상속 활용 테크닉"에 해당하는 내용입니다. 파생 클래스에서 '명시적'으로 복제 생성자를 정의할 경우 // 슈퍼 혹은 베이스 클래스 class Super { public: Super(); Super(const Super& _super); }; // 서브 혹은 파생 클래스 class Sub : public Super { public: Sub(); Sub(const Sub& _sub); }; // 파생 클래스의 복제 생성자 Sub::Sub(const Sub& _sub) : Super(_sub) {} 클래스 안에서 동..
#1. 개념 1. 디폴트 인자 활용 가상 함수를 오버라이딩?class Super{protected: virtual void SomeFunc(int val = 3) { cout 만약, Super 유형의 포인터를 Sub 유형의 객체를 가리키고, 가상 함수를 호출할 경우, Sub 유형의 가상 함수가 호출됩니다. 하지만! 가상 함수가 '디폴트 인자'를 활용할 경우, 직접 코드에서 활용하는 포인터 혹은 참조의 유형이 어떠한 함수를 호출할 것인지 결정하는 요소가 됩니다.   #2. 코드 class Super{public: virtual void go(int i=2) { cout Super super;Sub sub;Super& superRefToSub = sub;super.go(); /..
[Basic C++] #15_오버라이딩의 특수한 경우 세 번째 C++ 개발에서 오버라이딩을 사용 시 주의할 점에 대해서 알아보겠습니다. "전문가를 위한 C"의 9 항목, "클래스 상속 활용 테크닉"에 해당하는 내용입니다. private 또는 protected 가상 멤버 함수를 오버라이드 할 경우 class Times { public: virtual int getTimesResult() const {return getDeafualtOperand() * getInputOperand;}// 디폴트 Operands 값 * 인자로 들어온 operands void setInputOperand (int i) {inputOperand = i;} void getInputOperand () {reutrn inputOper..
[Basic C++] #14_오버라이딩의 특수한 경우 두 번째 C++ 개발에서 오버라이딩을 사용 시 주의할 점에 대해서 알아보겠습니다. "전문가를 위한 C"의 9 항목, "클래스 상속 활용 테크닉"에 해당하는 내용입니다. 오버로딩 된 가상 함수를 오버라이딩 할 경우 class Suepr { public: virtual void Overload() {...} virtual void Overload(int i) {...} }; class Sub : public Super { public: virtual void Overload() {...} }; 특정 프로토타입을 가지는 가상 함수를 오버라이딩 하면 파라미터와 관계없이 같은 이름을 가지는 부모 클래스의 모든 함수가 숨겨지게 됩니다. 쉽게 말해서, 특정 프로토..
[Basic C++] #10_오버라이드 키워드, override C++ 개발에서 베이스 클래스의 가상 함수를 오버라이딩 하는 구체적인 예제들을 살펴보겠습니다. "전문가를 위한 C"의 9 항목, "클래스 상속 활용 테크닉"에 해당하는 내용입니다. 오버라이드 키워드(override) class Super { public: Super(); virtual ~Super(); virtual void someMethod(double d); }; class Sub : public Super { public: Sub(); virtual void someMethod(int i) override;// 에러 발생! }; 먼저, "override" 키워드 사용의 필요성에 대해 복기해봅시다. 서브 클래스는 베이스 클래스에서 선언..
[Basic C++] #6_오버라이딩과 오버로딩의 차이점 C++ 개발 관련 내용 중, 오버로딩과 오버라이딩에 대해 알아보겠습니다. "전문가를 위한 C"의 8 항목, "클래스와 객체 마스터하기"의 내용입니다. #0. 오버로딩 vs 오버라이딩 1. 개념 C++의 오버로딩(Overloading)은 동일한 유효범위 내 혹은 동일한 상속 계층 내 여러 멤버 함수들이 서로 다른 시그니처를 갖고 함수 이름의 중복만 허용하는 기능입니다. C++의 오버라이딩(Overriding)은 부모 클래스에서 정의한 가상 함수를 자식 클래스에서 재정의 할 수 있도록 허용하는 기능입니다. 따라서, 오버라이딩과 오버라이딩의 차이점은 동일한 스코프 내 서로 다른 함수들이 함수 시그니처 중 동일한 이름만갖고 그 외 반환 타입, 파리미터 유..
[Effective C++] #33_오버 라이딩 문제 Scott Meyers의 "Effective C++" 를 통해, C++ 구현에 필요한 개념들을 이해하고, 기록하기 위함입니다. 해당 항목은 6장 '상속 그리고 객체 지향 설계', 항목 33 "상속된 이름을 숨기는 일은 피하자"에 해당하는 내용입니다. 유효 범위, Scope int x; void someFunc() { double x; std::cin >> x; } 먼저, 유효범위에 대해 알아보겠습니다. std::cin을 실행하여 값을 입력받을 "x"변수는 가장 위에 선언한 "int x"일까요, someFunc 함수 내부에 선언된 "double x"일까요? 답은 지역 변수 "double x"입니다. 이유는 안쪽 유효범위, 즉 "void someFunc(..
Hardii2
'오버라이딩' 태그의 글 목록