C 的变量覆盖
Variable Overriding in C++
考虑以下代码。
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(在此示例中的整数)是一个好主意吗?这有什么问题吗?(例如:阴影!)
一般来说,用具有相同名称的新变量代替父母的变量,可能会造成混淆和错误。
在您的示例中,不仅替换了变量,而且还通过"名称隐藏"(您称之为"阴影")。
看来您不喜欢父母的属性(可能是行为),这可能表明您的类层次结构应被重新审视。
您可以在此处阅读有关"姓名隐藏"基本原理作为语言功能。
相关文章:
- C++ 成员变量被非成员函数覆盖
- 使用CIN时,字符串变量不会被覆盖
- 通过使用全局变量的函数访问在给定范围内被覆盖的变量
- 每个方法调用上都覆盖了本地变量指针
- for 循环,允许变量相互覆盖
- C 的变量覆盖
- C 覆盖成员变量
- 覆盖运算符<< 对于控制台输出不适用于成员变量
- C 多重继承,虚拟方法覆盖问题和协变量返回类型
- 提取运算符 (>>) 可以覆盖变量吗?
- C++ 在超类构造函数中运行依赖于子类覆盖的大量变量的代码的正确方法是什么?
- 如何强制 gcc 查找自己的 c++ 头文件,而不覆盖 CXX 变量
- C++ fscanf() 返回 -1 并且不覆盖变量
- 为什么引用成员变量会相互覆盖
- 变量赋值覆盖其他变量的值
- c++变量在每次循环迭代期间被覆盖
- 使用new时将覆盖变量
- 为什么作用域解析对覆盖的变量不起作用?
- 模板类函数中的静态变量被全局静态变量覆盖
- 代码覆盖变量,尽管它不应该