C++中如何像Java的super一样设置基类成员变量?代码问题求助
C++里有没有类似Java super的机制?
C++里有类似Java super的用法,你可以通过**基类名+作用域解析符::**来明确访问基类的成员变量或方法,用来区分同名的派生类成员或者直接操作基类成员。
你的代码问题出在哪
你写的setvalue函数里,参数a和基类的成员变量a重名了,这时候局部的参数a会“盖住”基类的成员变量,执行a = a只是把参数自己赋值给自己,完全没碰基类的a,所以输出不对。
修正后的代码
#include<iostream> using namespace std; class Base { protected: int a; }; class Derived: public Base { public: void setvalue(int a) { // 用Base::a明确指定要修改基类的成员变量 Base::a = a; } int getvalue() { return a; } }; int main() { Derived d; d.setvalue(23); cout << d.getvalue() << endl; }
补充说明
如果派生类里没定义和基类同名的成员,也可以用this->a = a来区分局部参数和成员变量,但用Base::a会更直观,一眼就能看出是在操作基类的成员。
内容的提问来源于stack exchange,提问作者Gaurav Lodhi
相关产品推荐
相关产品推荐

