デフォルトのパラメータまたは私の言語の予期せぬ潜行性が私の敵です

, , , .



. , ? « », .



#include <iostream>

using namespace std;



class A {

public:

    virtual void Foo (int n = 10) {

        cout << "A::Foo, n = " << n << endl;

    }

};



class B : public A {

public:

    virtual void Foo (int n = 20) {

        cout << "B::Foo, n = " << n << endl;

    }

};



int main() {

    A * pa = new B ();

    pa->Foo ();



    return 0;

}








! , ? !



B::Foo, n = 10







, B::Foo, n = 20



, . , ?! , , B



. … …



, ! «» , .



, , . A::Foo, n = 10



, , ++. , - , .



, ?



, , . A *



, A::Foo



.



— §8.3.6, 10 working paper ISO/IEC 14882: Programming Language C++. ( working paper . 1998 .)



, , ? , . , .



? , . , , . , /W4



-Wextra



. ( Visual C++ 2008 SP1 gcc 3.4.4.)



, — . — , , - , . ? .



. . .



. C++ . , ++ . : C++ , , .



P.S. , no_smoking . !



All Articles