隐藏规则-参数/返回类型必须相同吗?

Hiding rule- do the arguments/return type have to be the same?

本文关键字:返回类型 规则 参数 隐藏      更新时间:2023-10-16

我有几个问题/关于隐藏的一般问题?

基类有一个函数:f()派生类现在声明虚函数f()

如果派生函数是const会发生什么?这不是隐藏吗?

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

参数不一致?

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

只是想知道两个函数之间的哪些差异会导致隐藏/不会导致隐藏

隐藏的是名字,而不是签名。

重要的事先说

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

using baseClass::functionName();

Const—如果你定义一个函数两次,一次使用Const,另一次不使用Const,它们是不同的。Scott Mayers的《effective c++》一书中有一章很好地解释了const和non - const,我建议你读一下,以彻底理解。

你不能通过有不同的返回类型来覆盖一个函数,它可能会给出编译时的错误,说明它是模糊的-测试它,以确保。

你可以通过不同的参数列表来重载一个函数,这就是重载函数的方式。

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