. , ? « », .
#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 . !