TITLE: Private members are not publicly invisible [ Material adapted from "C++ Gotchas", tutorial notes by Tom Cargill, p. 11] Even though private members may not be accessed, their names are still visible. There are situations in which a client programmer must read the private part of a class declaration, even though the information is inaccessible. For example, the following program results in an ambiguity error: class C { void f (char*); // private public: void f (float); // public }; int main () { C x; x.f(0); // ambiguous return 0; } Remember, when trying to match a call against a method, the compiler first limits based on scoping, then overloading. Only after these are considered, does access come into play.