overloaded functions are hidden in derived class

In a derived class If I redefine/overload a function name from a Base class, then those overloaded functions are not accessable/visible to derived class. Why is this??

If we don't overload the oveloaded function from the base class in derived class then all the overloaded versions of that function are available to derived class objects, why is this?? what is the reason behind this. If you explain this in compiler and linker level that will be more helpful to me. is it not possible to support this kind of scinario??

Edited  
For examble:

class B  
{  

  public: 
     int f() {}
     int f(string s) {}
};

class D : public B
{
   public:
    int f(int) {}
};

int main()
{
   D d;
   d.f(1);
   //d.f(string);  //hidden for D
} 

Now object 'd' can't access f() and f(string).

Answers


TTBOMK this doesn't have a real technical reason, it's just that Stroustrup, when creating the language, considered this to be the better default. (In this it's similar to the rule that rvalues do not implicitly bind to non-const references.)

You can easily work around it be explicitly bringing base class versions into the derived class' scope:

class base {
public:
  void f(int);
  void g(int);
};

class derived : public base {
public:
  using base::f;
  void f(float);
  void g(float); // hides base::g
};

or by calling the explicitly:

derived d;
d.base::g(42); // explicitly call base class version

The functions are available, you just need to call them explicitly:

struct A {
   void f(){}
};

struct B : public A {
   void f() {}
};

int main() {
   B b;
   b.f();     // call derived function
   b.A::f();  // call base function
}

Need Your Help

Updating Parsed Json data into Listview

android json android-listview

I've been trying to store the parsed Json data into Listview but it's not working.

What options for Secure Database For Mac OS Xdevelopment (esp. Core Data)?

database macos cocoa security core-data

I am building a Cocoa application that will store customer data. I'm currently using Core Data with SQLite store. Unfortunately, I have not found a way to secure the database.