虚函数和缺省实参

#include <iostream>
using namespace std;

class A
{
public:
        virtual void foo(int a = 1024)
        {
                cout << " A -> foo " << a << endl;
        }

};

class B : public A
{
public:
        virtual void foo(int a = 2048)
        {
                cout << " B -> foo " << a << endl;
        }

};

int main()
{
        B* b = new B;
        b->foo();

        A* a = b;
        a->foo();
}

输出结果:

/home/a/j/nomad2:./a.out       
 B -> foo 2048
 B -> foo 1024

传给foo的缺省实参不是在运行时决定的,而是在编译时根据被调用函数的对象的类型决定的。

你可能感兴趣的:(虚函数和缺省实参)