请问using是怎么用的

zhourn 2002-10-30 11:34:12
请问下列程序中的using B::f 和using B::g是何作用
再请问类D继承于B,但没加继承的权限,这什么意思

#include <stdio.h>
class B
{
public:
void f(char)
{
printf("In B::f()\n");
}

void g(char)
{
printf("In B::g()\n");
}
};

class D : B
{
public:
using B::f;
using B::g;
void f(int)
{
printf("In D::f()\n");
f('c');
}

void g(int)
{
printf("In D::g()\n");
g('c');
}
};

void main()
{
D myD;
myD.f(1);
myD.g('a');
}
...全文
57 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
ckacka 2002-11-01
  • 打赏
  • 举报
回复
对!
详细内容请看《C++Primer》
liu_feng_fly 2002-10-30
  • 打赏
  • 举报
回复
kxw(时光)说的对。具体到你的程序,是这样
B::f(char) D::f(int)
当你这样写
D d;
int n = 100;
char c='a';
d.f(n);//调用D::f(int)
d.f(c);//调用B::f(char)
如果你没有在D里面using B::f,那么d.f(c)就无法编译。只有你using B::f之后,函数重载(基类和派生类之间的)才会发生作用
zhourn 2002-10-30
  • 打赏
  • 举报
回复
Thank you.
liusan 2002-10-30
  • 打赏
  • 举报
回复
个人理解表示直接继承基类中的成员
kxw 2002-10-30
  • 打赏
  • 举报
回复
这是有关函数重载的用法,将class B中的函数在class D中成为可视函数。
如不这样,则继承下来的class D会覆盖classB中的函数。
gucs 2002-10-30
  • 打赏
  • 举报
回复
gz

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧