Qualified Calls

A function call such as the following:

 classname::funcname();

is a qualified call. Qualified disambiguate function names. They are needed, for instance, in a class that inherits from several base classes, each of which having functions with identical names. Consider:

 struct B1{ int f();};struct B2{ int f();};class D: public B1, public B2  {public: // f() is ambiguous in class D int g() {B2::f();} //qualified call resolves the right f()};

Another use of qualified calls is to bypass the virtual call resolution mechanism. Suppose you have a virtual function f() in a base class that is overridden in a derived class. To invoke the base’s f() in the derived class, you need to use the qualified call base::f(). In this case, the call is resolved statically, not dynamically.

Share the Post:
Share on facebook
Share on twitter
Share on linkedin

Overview

Recent Articles: