Betrachten Sie den folgenden Code:
class A {
public:
virtual ~A() { }
virtual void print() const {
std::cout << "In A" << std::endl;
}
};
class B : public A {
public:
B() { }
virtual ~B() { }
virtual void print() const {
std::cout << "In B" << std::endl;
}
};
void doSomething(A* a) {
a->print();
}
void doSomething(const A a) {
a.print();
}
int main()
{
A* a = new B();
doSomething(a);
doSomething(B());
return 0;
}
Warum gibt das folgende Ergebnis aus:
In B
In A
Aber wenn Sie doSomething
zu doSomething(const A& a)
ändern, gibt es aus:
In B
In B