0
다음 코드가 있습니다. foo (A a)를 수정하는 방법이 있는지 궁금해서 아래 코드에 주석을 달아 결과를 얻었습니다. 오버로드하지 마십시오.함수 매개 변수, 다형성
class A {
public: virtual void print() { std::cout << "A\n"; } };
class B : public A {
public: virtual void print() { std:cout << "B\n"; }
};
void foo(A a) { a.print(); } // How to modify this, so it chooses to use B's print()?
// void foo(B a) { a.print(); } // now, this would work!
int main(void) {
A a;
foo(a); // prints A
B b;
foo(b); // prints A, but I want it to print B
}
이것은 모두 가능합니까? 그렇지 않다면, 왜?
어리석은 인간의 확인이 늦어서 ... –
나는 그 문제를 잘라내 는가, 아니면 복사본이 만들어 졌는지 궁금하다. –
인쇄는 아마도 const 메소드이어야하고 foo는 const 참조를 받아 들일 수 있습니다. [Zaviour의 이익을 위해] –