#include<vector>
using std::cout;
using std::endl;
class A
{
public:
virtual void f1()
{
cout << "A, f1" << endl;
}
virtual void f2()
{
cout << "A, f2" << endl;
}
void f3()
{
cout << "A, f3" << endl;
}
};
class B : public A
{
public:
void f1()
{
cout << "B, f1" << endl;
}
void f3()
{
cout << "B, f3" << endl;
}
};
int main()
{
A *p1 = new B;
p1->f1();
p1->f2();
p1->f3();
B *p2 = new B;
p2->f1();
p2->f2();
p2->f3();
// cout << std::vector<float>(1.0, -1.0) << endl;
return 0;
}
结果是:
B, f1
A, f2
A, f3
B, f1
A, f2
B, f3
--------------------------------------------------------------------------------------------------------------------------------
class A
{
public:
void F()
{
cout << "use A's F_A()";
}
virtual void FFF()
{
F();
}
};
class B : public A
{
public:
void F()
{
cout << "use B's F_B()";
}
};
class C :
public B
{
public:
void FF(){};
//virtual void F()
//{
// cout << "use C's F_C()";
//}
};
C c;
c.FFF();
如果class A中的void F() 不是虚函数,此时执行的结果是use A's F_A()
如果class A中的virtual void F() 是虚函数,此时执行的结果是use A's F_B()
c.F();
此时的结果是use A's F_B()