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

C++ Vector类构造函数如何实现参数超阈值时重置成员变量为0

问题修复方案

问题根因

  • 你的构造函数仅在参数大于100的分支中给成员变量赋值,当参数均不大于100时,成员变量没有初始化,属于未定义行为,你现在测试输出的0,0,0只是随机的垃圾值,并非逻辑触发的结果。
  • 你当前的判断条件x > 100 || y > 100 || z > 100是仅当参数严格大于100才触发重置,符合“参数高于100就重置”的需求,如果你需要连等于100的情况也拦截,修改为>=即可。

修正后的代码

Vector构造函数

Vector::Vector(int x, int y, int z)
{
    // 先给成员变量赋初始传入值
    this->x = x;
    this->y = y;
    this->z = z;
    // 判断是否存在超过100的参数
    if (x > 100 || y > 100 || z > 100)
    {
        std::cout << "the value should not be higher than 100" << std::endl;
        // 全部重置为0
        this->x = 0;
        this->y = 0;
        this->z = 0;
    }
}

测试用例说明

当你执行Vector direction = Vector(100, 50, 10)时,因为100不算高于100,不会触发重置逻辑,最终输出结果为100, 50, 10,符合预期。
如果你执行Vector direction = Vector(101, 50, 10),就会触发重置逻辑,输出0, 0, 0并打印提示。

补充说明

你需要确保已经重载了std::ostream& operator<<(std::ostream& os, const Vector& v)运算符,否则直接对Vector对象执行std::cout操作会编译报错。


内容的提问来源于stack exchange,提问作者Islam Aliev

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 19:18:03