2014-04-30 2 views
0

파생 클래스 개체를 가리키는 기본 클래스 포인터의 형식이 변경됩니까?파생 클래스 개체를 가리키는 기본 클래스 포인터의 유형

나는 경우 뭔가 같은 : 다음

class base{ 
public: 
    int a; 
    void doit(); 
}; 

class derived : public base { 
public: 
    int a,b; 
    void doit(); 
} 

그리고 다음 과제 수행의

base *b = new derived; 
cout << typeof(b); 

윌 포인터 나 변화의 유형 에 포인터를을 유도하거나이를 유지 않습니다 동일한 ie 에 포인터? 그리고 왜?

+1

기본 클래스에서 파생 된 상속되지 않은 컴파일러 오류가 발생합니다. – Rakib

+1

올바른 상속을 가정하면 b의 유형은 파생되지 않고 기본이어야합니다. 왜냐하면 type은 포인터가 가리키는 객체의 타입이 아니라 포인터의 타입을 의미하기 때문이다. – Rakib

+0

typeof는 표준이 아닙니다. 타입 아이디 라니? – kec

답변

2

코드는 다음과 같아야

  class A 
      {}; 

     class B:public A 
     {}; 


     int main() 
     { 

      A* a= new B(); 

      cout<<typeid(a).name()<<endl; 
     } 

출력 : 클래스 A *.

유형은 포인터의 유형 (기본 *)을 나타내며 포인터가 가리키는 객체의 유형이 아닙니다.

관련 문제