Inherit constructor, function
: 부모 class의 생성자와 함수를 상속받을 수 있다.
위 예제에서 main 함수에서 에러가 발생하는 code 는 무엇일까?
d.foo(1, 2); 호출 시 부모 class의 foo(int, int); 가 호출될 것이라 예상하지만, 그렇지 않다.
자식 class 에서 foo 를 만들면 부모에 있는 모든 foo함수는 가려지게 된다.(hide)
즉, 부모&자식 간의 함수 overloading 은 되지 않는다.
Overloading 은 해당 class내의 function 에 적용된다.
(너무나 당연한 얘기지만 가끔은 이런 사실조차도 헷갈릴 수 있다.)
이런 얘기를 하는 것은 해결방법이 있기 때문이 아니겠는가?!
부모 class의 function 을 상속 받아 사용하고 싶다면,
using 키워드를 사용한다.
또한 function 뿐만 아니라, 생성자도 상속이 가능하다.
피드 구독하기:
글 (Atom)
[C++] meta programing
재귀 호출에 관해 template meta programming 을 적용한 예제를 살펴보자. #include using namespace std; int fact(int n){ if(n factorial 연산을 하는 일반적인 재귀 호출 함...
-
Template specialization : class template 을 arguments에 따라서 customizing 하는 기법 먼저 위 예제의 첫 번째 template 선언처럼 일반적인 template 선언은 primary temp...
-
Override : 함수를 Override 할 때 정확한 signature 에 맞춰 override 되는지 컴파일 타임에 확인되도록 하는 키워드 위 예제에서 발생하는 실수들이 문제가 되는 이유는 IDE에서 컴파일하는데 문제가 없기 때문이다...
-
Static assert : 컴파일 타임에 assertion 을 할 수 있다. C에서 기존에 사용하던 assert() 는 runtime 에 동작한다. C++11에서는 컴파일 타임에도 assert을 사용하도록 static_assert 를 도입...