请考虑以下代码。
class Base1
{
public:
void func1(float x)
{var1 = x;}
private:
float var1;
};
class Derived1: public Base1
{
public:
void func1(int x)
{var1 = x;}
private:
int var1;
};
使用新数据类型(本例中为整数)重新定义变量var1是一个好主意吗?这有什么问题吗? (例如:影子!)
答案 0 :(得分:1)
一般来说,将父变量替换为具有相同名称的新变量可能会造成混淆和容易出错。
在你的例子中,不仅要替换变量,还要设置它的功能,通过“名称隐藏”(你将其称为“阴影”)。
您似乎不喜欢父级的属性(可能还有行为),这可能是您应该重新访问类层次结构的信号。
您可以将“名称隐藏”理由视为语言功能here。