C 的变量覆盖

Variable Overriding in C++

本文关键字:覆盖 变量      更新时间:2023-10-16

考虑以下代码。

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(在此示例中的整数)是一个好主意吗?这有什么问题吗?(例如:阴影!)

一般来说,用具有相同名称的新变量代替父母的变量,可能会造成混淆和错误。

在您的示例中,不仅替换了变量,而且还通过"名称隐藏"(您称之为"阴影")。

看来您不喜欢父母的属性(可能是行为),这可能表明您的类层次结构应被重新审视。

您可以在此处阅读有关"姓名隐藏"基本原理作为语言功能。