关于虚函数重载后的继承有关问题

关于虚函数重载后的继承问题

以下案例,a类有重载的set函数,b类重写a类的set()的虚函数,但没有重写set(char *)
为何在b类的实例中调用set(char *)函数编译会找不到此函数?

#include "stdafx.h"

class a
{
public:
virtual int set();
virtual int set(char *);
};

class b
{
public:
virtual int set();
};

int a::set()
{
return 0;
}

int a::set(char *)
{
return 0;
}

int b::set()
{
return 0;
}

int _tmain(int argc, _TCHAR* argv[])
{
b bb;

bb.set("");

return 0;
}





------解决方案--------------------
class a
{
public:
    virtual int set();
    virtual int set(char *);
};
 
class b : public a
{
public:
using a::set;
    virtual int set();
};
 
int a::set()
{
    return 0;
}
 
int a::set(char *)
{
    return 0;
}
 
int b::set()
{
    return 0;
}
 
int main()
{
    b bb;
 
    bb.set("");
 
    return 0;
}

------解决方案--------------------
b里面根本没有set(char *)函数
------解决方案--------------------
在b中覆盖了其中一个虚函数,另一个也就被隐藏了。 这通常不是问题,因为通常通过基类的指针/引用类
访问的。 

b obj;
a& base = obj;
base.set("");

------解决方案--------------------
class a
{
public:
    virtual int set();
    virtual int set(char *);
};
 
class b : public a
{
public:
     int set();
 int set(char *);
};
 
int a::set()
{
    return 0;
}
 
int a::set(char *)
{
    return 0;
}
 
int b::set()
{
    return 0;
}
int b::set(char *)
{
    return 0;
}
 
int main()
{
    b bb;
 
    bb.set("");
 
    return 0;
}

------解决方案--------------------
引用:
引用:
在b中覆盖了其中一个虚函数,另一个也就被隐藏了。 这通常不是问题,因为通常通过基类的指针/引用类
访问的。 
C/C++ code?123b obj;a& base = obj;base.set("");
请问一下,为何会覆盖,不覆盖的话逻辑上会有什么问题么?
你看下多态性