2013-03-19 2 views
1

로부터 함수를 호출 I이 클래스 A 및 B. 기본 클래스

class A{ 
public: 
    foo(); 
}; 

class B : public A{ 
public: 
    int x; 
}; 

내가 푸 함수 호출해야 테스트 file.How으로 B 클래스 객체가 있다고 가정은? ?

object.foo(); // or 
object.A::foo(); 

다른 질문 : 우리는 같은 함수를 호출 할 때 나는 다중 상속을 어떻게 경우?

+3

어떤 문제가 있습니까? 이것은 정말 기본적인 것이므로 간단히 시도해야합니다. 말할 것도없이 [당신의 C++ 책] (http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list) ... –

+0

나는 당신이 마지막으로 가도록 권하고 싶다. 링크 난에 대한 내 대답에 추가'C에서 개인, 공개 및 보호 상속의 차이 + +' –

답변

1

클래스 B가 클래스 A의 공용 멤버를 상속하므로 기능 foo()는 클래스 B에 속하고 B 클래스의 개체를 사용하여 호출 할 수 있습니다. 단지 같은

b.x; 

xfoo() 모두 객체 b의 회원을 참조하십시오

B b; 
b.foo(); 

는 당신은 b 클래스 B의 객체이고 그것의 가능한 inheritance in c++. 그것을 알 필요가 클래스에서 클래스 B의 상속 기능 때문에 A, 코드 함수 foo()에 있음. 멀티 레벨 상속 :

클래스 A는 유효하지

EDIT가

A a; 
a.foo(); 

가 유효 하나의 멤버 함수 foo(), 그러나

a.x; 

있다 클래스 C는 클래스 B를 상속 받고 클래스 B는 클래스 A를 상속받습니다.

class C : public B{ 
public: 
    int y; 
}; 

C c; 
c.foo(); // correct 

도 유효합니다.

그리고

c.x; 
c.y; 

또한 유효 x, y, foo() 모든 클래스 C.

공지의 회원 : 나는 당신이 Multiple inheritance in C++이 다른 여러 수준 말한. 또한 C++의 세 가지 액세스 지정자는 상속의 경우 매우 중요합니다. public private protected in c++

3
단순히 object.foo()

, 그리고 훨씬 더 추가 할 수있다 :

B object; 
object.foo();