habe ein folgendes problem: (unter VC++)
#include <iostream>
using namespace std;
class B
{
public:
f1()
{
f2();
}
private:
virtual f2()
{
cout<<"B::f2()"<<endl;
}
};
class D
ublic B
{
f2() //überschreibt B::f2, geht es?
{
cout<<"D::f2()"<<endl;
}
};
void main()
{
B* bp = new D;
bp->f1();
}
in class B wird die private definierte virtual funktion f2 von D:: f2()überschrieben.
aber in main wenn ich "bp->f1()"aufrufe, dann soll eigentlich B::f2() aufgerufen werden, weil die ist privat.
Die wahrheit ist D::f2 wird dadurch aufgerufen. Anscheinend D::f2 hat wirklich B::f2 überschrieben, obwohl die private elementfunktion ist.
ist es ein bug von VC?
#include <iostream>
using namespace std;
class B
{
public:
f1()
{
f2();
}
private:
virtual f2()
{
cout<<"B::f2()"<<endl;
}
};
class D

{
f2() //überschreibt B::f2, geht es?
{
cout<<"D::f2()"<<endl;
}
};
void main()
{
B* bp = new D;
bp->f1();
}
in class B wird die private definierte virtual funktion f2 von D:: f2()überschrieben.
aber in main wenn ich "bp->f1()"aufrufe, dann soll eigentlich B::f2() aufgerufen werden, weil die ist privat.
Die wahrheit ist D::f2 wird dadurch aufgerufen. Anscheinend D::f2 hat wirklich B::f2 überschrieben, obwohl die private elementfunktion ist.
ist es ein bug von VC?