그래서 내 교수는 우리가 알아 내야 할 종이에 코드로 우리를 테스트하는 것을 좋아합니다. 나는 코드를 게시하지 않을 것이다. 왜냐하면 나는 대답을 찾지 않을 것이기 때문에 그가 혼란스럽게 한 것은 우리가 한 클래스의 객체를 초기화 한 다음 다른 클래스의 포인터를 초기화하여 상기 목적. 그것은 나에게서 지옥을 혼란 시켰고 그것을 찾는 방법을 알지 못하는 특별한 문제입니다. 예 :클래스 E의 멤버를 가리키는 클래스 D의 포인터
class A {
// etc
}
...
class D {
void fy(etc, etc, etc) {}
// etc
}
class E: public D {
void fy(etc, etc, etc) {}
// etc
}
main() {
E e
D *d = &e
d->fy(15,25)
//everything else
"d-> fy()"는 D 또는 E의 fy() 함수를 수행합니까? D의 fy() 함수가 가상이라면, E의 함수를 쓸 것인가?
포인터가 한 클래스의 포인터 일 때 다른 포인터를 가리킬 때 포인터는 무엇을합니까? 나는이 질문이 이전에 대답되었을 수도 있지만 어디서나 그것을 찾을 수는 없다는 것을 알기 때문에 나는 대답으로 향하는 것에 감사 할뿐입니다. 고맙습니다.
Liskov Substitution Principle을 살펴보면'E'는'D'이므로'E *'를 사용하고'D * '에 저장할 수 있습니다. –