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()" }