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

C++类成员输出值始终为0而非实际输入值问题求助(附代码)

问题分析与修复:矩形类构造函数赋值错误导致输出为0

嘿,别慌!离考试还有两天,这个问题其实很好解决——你的代码里构造函数的赋值顺序完全搞反了,这才导致输出一直是0。

问题根源

你看构造函数里的这段代码:

rectangle(int a, int b) {
    a=length;
    b=width;
}

这里你是把类成员length和width的默认初始值(int类型默认是0)赋值给了参数a和b,而不是把用户传入的a、b值赋值给类的成员变量。相当于你完全没把用户输入的长和宽存到类里,所以调用getl()和getw()时,返回的始终是成员变量的默认0值。

修复后的代码

只需要把构造函数里的赋值顺序反过来就行:

#include <iostream>
using namespace std;
class rectangle {
    int width;
    int length;
public:
    rectangle(int a, int b) {
        // 修正赋值顺序:把参数值赋给类成员
        length = a;
        width = b;
    }
    int getl() {
        return length;
    }
    int getw() {
        return width;
    }
};
int main() {
    int l,w;
    cout<<"enter the length of the rectangle: ";
    cin>>l;
    cout<<"enter the width of the rectangle: ";
    cin>>w;
    rectangle one(l,w);
    cout<<"length: "<<one.getl()<<endl;
    cout<<"width: "<<one.getw()<<endl;
    return 0;
}

额外小建议(适合考试加分)

C++里构造函数更规范的写法是用初始化列表,这样效率更高,代码也更清晰,考试写出来会显得更专业:

rectangle(int a, int b) : length(a), width(b) {}

直接在初始化列表里给成员变量赋值,避免了先默认初始化再赋值的步骤,逻辑也更直观。

现在运行代码,就能正确输出你输入的长和宽啦,祝你考试顺利!

内容的提问来源于stack exchange,提问作者Fai Zan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 18:12:51