打印

C++继承问题

[复制链接]
917|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
gxgclg|  楼主 | 2013-4-28 09:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
class base
{
  int f() const{};
  void f(string s ){};
};
class derive : public base
{
  void f() const{};
};

简单写了一下,上面这种情况下
base里面f()是重载,在derive中重写了其中一个,为什么在derive.f(string)会报编译错误呢?
为什么f(string)会被隐藏而不是被继承了?

相关帖子

沙发
无冕之王| | 2013-4-28 09:11 | 只看该作者
仅返回值类型不同,不能算是重载

使用特权

评论回复
板凳
pkat| | 2013-4-28 09:27 | 只看该作者
C++语法规定如果派生类和基类有同名函数,就执行派生类函数。即使参数不同,也不能使用基类的函数。

使用特权

评论回复
地板
baidudz| | 2013-4-28 09:30 | 只看该作者
首先在你的base类中,你的函数前面即没有public也没有private,c++中的类对于这种情况就当做private处理,也就是说,你base类中的两个函数式base中的私有部分,在derive中虽然继承了这两个函数,但是这两个函数只能在base中访问,也就是说,在derive中你是不可以访问这两个函数的,所以会出错,这样定义你的base类
class base
{
public:
.........//你的成员函数
};
或者用protected代替public  希望对你有帮助

使用特权

评论回复
5
秋天落叶| | 2013-4-28 19:02 | 只看该作者
baidudz 发表于 2013-4-28 09:30
首先在你的base类中,你的函数前面即没有public也没有private,c++中的类对于这种情况就当做private处理, ...

可以试试

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

177

主题

1653

帖子

1

粉丝