- 论坛徽章:
- 0
|
幻の上帝 发表于 2012-05-02 18:53 ![]()
base和child里都有f,除非using base::f;,base里的被child里的隐藏了,实际参与重载解析的只有child::f。
...
这个using base::f;应该写在哪里? 我写在child类里面发现还是不行啊:
- struct base{
- virtual void f(int){printf("%s\n",__FUNCTION__);}
- virtual void f(float){printf("%s\n",__FUNCTION__);}
- virtual void g(int){printf("%s\n",__FUNCTION__);}
- virtual ~base(){}
- };
- struct child: base{
- using base::f;
- void f(float){printf("%s\n",__FUNCTION__);}
- void g(int){printf("%s\n",__FUNCTION__);}
- };
- int main(void)
- {
- base* pb=new child;
- pb->f(1.0f);
- pb->g(1);
- delete pb;
- return 0;
- }
复制代码 |
|