子类同名变量会隐藏父类成员,需用基类名::变量名访问父类成员。如Base::value可显式调用被隐藏的父类变量,this->value仅访问子类自身成员。

在C++中,当子类和父类存在同名变量时,子类会隐藏父类的同名成员变量。如果需要访问被隐藏的父类变量,可以通过作用域解析运算符 :: 显式调用父类的变量。
通过 基类名::成员变量 的方式,可以明确指定访问父类中的同名变量。
示例代码:#include <iostream>
using namespace std;
class Base {
protected:
int value;
public:
Base() : value(10) {}
};
class Derived : public Base {
private:
int value; // 与父类同名,会隐藏父类的value
public:
Derived() : value(20) {}
void printValues() {
cout << "父类的value: " << Base::value << endl; // 访问父类变量
cout << "子类的value: " << this->value << endl; // 访问当前类变量
}
};
int main() {
Derived d;
d.printValues();
return 0;
}
输出结果:
父类的value: 10 子类的value: 20
直接使用变量名时,默认访问的是子类自身的成员。若想获取父类中定义的值,必须加上 Base:: 前缀。
立即学习“C++免费学习笔记(深入)”;
在多重继承或多层次继承结构中,同样适用此方法。只需指明具体基类名称即可。
例如:struct A { int x = 5; };
struct B : A { int x = 10; };
struct C : B { void show() { cout << A::x << endl; } }; // 访问祖父类A的x
基本上就这些。只要记住:同名变量会被遮蔽,要用 基类名::变量名 的形式显式访问父类成员。不复杂但容易忽略细节。
以上就是c++++中如何调用父类的同名变量_c++调用父类同名变量方法的详细内容,更多请关注php中文网其它相关文章!
c++怎么学习?c++怎么入门?c++在哪学?c++怎么学才快?不用担心,这里为大家提供了c++速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号