2013-03-04 82 views
0

我有几个问题/关于隐藏的一般问题?隐藏规则 - 参数/返回类型必须相同吗?

一个基类有一个函数:f()派生类现在宣布虚拟f值()

发生什么情况,如果导出函数是常量?这是否隐藏?

如果返回类型不同,怎么办?

参数不同?

一个是静态的,另一个不是?

只是想知道这两个函数之间的哪些区别导致隐藏/不会导致隐藏。

回答

3

隐藏是关于名称而不是签名。

+0

很酷谢谢..... – user997112 2013-03-04 21:25:00

0

第一件事第一件事。

隐藏是指如果在派生类中重写基类函数,那么在该派生类中,您定义的原始基类方法将被隐藏。 - 也就是说,如果你需要访问从基类定义的函数,那么你就需要有这样的在你的代码它不隐藏:

using baseClass::functionName(); 

常量 - 如果你定义一个函数两次与const另一个没有const它们是不同的。 Scott Mayers预定有效的C++包含解释常量和非常量的优秀章节,我建议您阅读它以获得透彻的理解。

您不能通过使用不同的返回类型来覆盖函数,它可能会给编译时间错误指出其含糊不清 - 测试它,以确保。

但是,你可以通过使用不同的参数列表来重载一个函数,那就是如何重载一个函数。

如果你在超载和超载之间感到困惑 - 那么我建议你也读一下。简而言之,重载是指当您在具有不同参数列表的相同作用域中使用两个函数时,重载是在您使用相同参数列表重新定义派生类中的基类虚函数时使用重写。

相关问题