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

C++类私有bool成员通过set/get函数赋值失效问题求助

问题原因

  • set_buy成员函数的赋值逻辑完全颠倒:现有代码b = buy是把私有成员buy的当前值赋值给入参b,完全没有修改类的私有成员,导致buy的值始终是未初始化的随机值,最终打印固定为0是内存随机值的巧合。
  • 额外存在两处不符合C++标准的写法:
    • 私有成员buy未初始化,栈上创建的类对象成员默认值是未定义的随机值
    • 标准C++要求main函数必须声明返回值类型为int

修正方案

需要修改的代码片段

  1. 修正set_buy函数的赋值方向,同时添加构造函数初始化成员变量:
class VideoGames {
private:    
    bool buy;
public: 
    // 构造函数初始化buy默认值为false
    VideoGames() : buy(false) {}
    bool get_buy(){return buy;} 
    // 把b=buy改成buy=b
    void set_buy(bool b){buy = b;}
};
  1. 修正main函数的返回值声明:
int main(){
    VideoGames g1;
    double price;
    cin >> price;
    if(price <=100){
        g1.set_buy(true);
    }else{
        g1.set_buy(false);
    }
    cout<<"Buy= " << g1.get_buy()<<endl;
    return 0;
}

补充说明

如果代码开头没有引入输入输出头文件,需要补充以下代码:

#include <iostream>
using namespace std;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 02:45:02