C++;继承名隐藏 我有一个C++和继承的问题。希望有人能帮我澄清一下

C++;继承名隐藏 我有一个C++和继承的问题。希望有人能帮我澄清一下,c++,C++,编译并运行以下代码: 以下是来自gcc的错误: 我的问题是:为什么C++不使用参数作为名称的一部分?是的,这是很多其他情况,为什么现在不行呢?请问一下你是否真的这么想。添加声明 using Foo::rnd; 到栏的公共部分 默认情况下,如果以某个名称提供方法,则会隐藏名称相同但签名不同的方法。这是因为当您打算覆盖时,这种情况经常错误地发生,但使用了不正确的签名,如果发生这种情况,就很难检测出来。请询问它您是否真的这么想。添加声明 using Foo::rnd; 到栏的公共部分 默认情况

编译并运行以下代码:

以下是来自gcc的错误:


我的问题是:为什么C++不使用参数作为名称的一部分?是的,这是很多其他情况,为什么现在不行呢?

请问一下你是否真的这么想。添加声明

using Foo::rnd;
栏的公共部分


默认情况下,如果以某个名称提供方法,则会隐藏名称相同但签名不同的方法。这是因为当您打算覆盖时,这种情况经常错误地发生,但使用了不正确的签名,如果发生这种情况,就很难检测出来。

请询问它您是否真的这么想。添加声明

using Foo::rnd;
栏的公共部分


默认情况下,如果以某个名称提供方法,则会隐藏名称相同但签名不同的方法。这是因为当您打算覆盖时,这种情况经常会错误发生,但使用的签名不正确,如果出现这种情况,则很难检测。

谢谢@Jan,我不能说我对这里的语言决定感到高兴,但您的修复效果很好。谢谢@Jan,我不能说我对这里的语言决定感到高兴,但你的修复效果很好。
ubuntu:~$ g++ -Wall -Wextra -pedantic test.cpp 
test.cpp: In function ‘void barTest()’:
test.cpp:28:42: error: no matching function for call to ‘Bar::rnd(int)’
    printf("Bar->rnd(16) = %u\n", r->rnd(16));
                                      ^
test.cpp:28:42: note: candidate is:
test.cpp:11:16: note: virtual unsigned int Bar::rnd()
    unsigned int rnd() {
            ^
test.cpp:11:16: note:   candidate expects 0 arguments, 1 provided
using Foo::rnd;