C++ 虚拟成员函数与非虚拟成员函数

示例

具有虚拟成员功能:

#include <iostream>

struct X {

    virtual void f() { std::cout << "X::f()\n"; }

};

struct Y : X {

    // 在此处再次指定虚拟是可选的

    // 因为可以从X :: f()推断出来。

    virtual void f() { std::cout << "Y::f()\n"; } 

};

void call(X& a) {

    a.f();

}

int main() {

    X x;

    Y y;

    call(x); // outputs "X::f()"

    call(y); // outputs "Y::f()"

}

没有虚拟成员函数

#include <iostream>

struct X {

   void f() { std::cout << "X::f()\n"; }

};

struct Y : X {

   void f() { std::cout << "Y::f()\n"; }

};

void call(X& a) {

    a.f();

}

int main() {

    X x;

    Y y;

    call(x); // outputs "X::f()"

    call(y); // outputs "X::f()"

}

           

以上是 C++ 虚拟成员函数与非虚拟成员函数 的全部内容, 来源链接: utcz.com/z/321335.html

回到顶部