Jon*_*han 8 c++ inheritance virtual-functions
假设以下简单情况(注意虚拟的位置)
class A {
virtual void func();
};
class B : public A {
void func();
};
class C : public B {
void func();
};
Run Code Online (Sandbox Code Playgroud)
请拨打以下电话B::func()或C::func()?
B* ptr_b = new C();
ptr_b->func();
Run Code Online (Sandbox Code Playgroud)
pointer_to_b_type.如果我理解你真正想问的是什么,那么'是'.这叫C::func:
C c;
B* p = &c;
p->func();
Run Code Online (Sandbox Code Playgroud)使用指针和引用的示例.
使用指针
B *pB = new C();
pB->func(); //calls C::func()
A *pA = new C();
pA->func(); //calls C::func()
Run Code Online (Sandbox Code Playgroud)使用参考.注意最后一个电话:最重要的电话.
C c;
B & b = c;
b.func(); //calls C::func()
//IMPORTANT - using reference!
A & a = b;
a.func(); //calls C::func(), not B::func()
Run Code Online (Sandbox Code Playgroud)在线演示:http://ideone.com/fdpU7
| 归档时间: |
|
| 查看次数: |
711 次 |
| 最近记录: |