用“ this”在继承中调用哪个函数?

时间:2019-06-25 19:15:47

标签: c++ inheritance

我试图了解继承, 这是一个例子:

int main(){
A *a = new C();
a->f();
}

class A {
public:
virtual void f()
{
    cout << "f in A\n";
}
 void g(){
    cout << "g in A\n";
}};

class B: public A{
public:
    void f(){
        cout << "f in B\n";
        this -> g();
    }
    void g() {
        cout << "g in B\n";
    }};

class C: public B{ 
public:
void g(){
    cout << "g in C\n";
}};

结果将是:

f in B
g in B

但是如果将A :: g()更改为虚拟,结果将是:

f in B
g in C

我理解它首先进入A :: f()看到它的虚拟内容,所以它进入了B :: f() 但是,谁是“这个”? ... 为什么当我将virtual添加到A :: g()时没有注意到B :: g()不是虚拟的? “此”静态是B,动态是C吗?

0 个答案:

没有答案