2014-10-14 2 views
-2

아래 코드를 이해하는 데 문제가 있습니다. Google을 사용하여 검색했지만 답변을 찾을 수 없습니다.클래스 내에서 정적 포인터에서 다른 클래스로 함수 호출

class B 
{ 
    //constructor etc 
    //...some stuff 
    virtual myinit(); 
    virtual doStuff(); 
}; 


class A : public B 
{ 
    //constructor etc 
    //...some stuff 

    static B * Create() 
    { 
     A* demo = new A; 
     demo->myinit(); 
     demo->doStuff(); 
     return demo; 
    } 
}; 

나는 내가 A를 만들 때, B 너무 만든 것을 알고있다. 그런데 Create()B 유형의 포인터를 반환하는 이유는 무엇입니까?

이 메서드는 자동으로 호출됩니까? 또한, 왜 이런 식으로 static입니까? 다형성과 정적 의미는 무엇인지 알고 있습니다.

+0

문제가 명확하지 않습니다. – user966379

+0

시맨틱 버그 수정 –

답변

0

why does Create() return a pointer to a type B?

안전하게 기본 클래스의 포인터로 파생 클래스의 포인터를 변환 할 수 있습니다.

왜이 기능을 사용하면 작성한 사람에게 질문해야합니다.

Is this method called automatically?

why is it static in this way?

그래서 당신은 클래스의 객체없이 함수를 호출 할 수있는 번호. 아직 A가없고 Create가 정적이 아닌 경우 Create 함수를 사용하여 A를 만들 수 없습니다.

0

정적 메서드는이 메서드가 클래스별로 존재하며 개체별로가 아니라 클래스에 바인딩된다는 것을 의미합니다. 정적 메서드 Create()는 잘 알려진 패턴 (Factory Pattern)입니다.

이 메서드에서는 A를 가리키는 개체가 만들어지고 메서드가 호출되어 반환됩니다.

0

이러한 질문은 비 멤버 변수 정적 2- 의미 다형 C++

1- 기본 개념 터치. 다형성

내가 여기 (http://www.cplusplus.com/doc/tutorial/polymorphism/)

정적에 대한 소개를 읽고 조언, 당신은 정적 멤버 함수는 클래스의 인스턴스없이 사용할 수 있다는 것을 알아야합니다.

+0

잘못된 종류의 정적입니다. –

+0

편집 됨, 코드 변경됨 – adev

관련 문제