You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 06:29:56