C++类私有bool成员通过set/get函数赋值失效问题求助
问题原因
set_buy成员函数的赋值逻辑完全颠倒:现有代码b = buy是把私有成员buy的当前值赋值给入参b,完全没有修改类的私有成员,导致buy的值始终是未初始化的随机值,最终打印固定为0是内存随机值的巧合。- 额外存在两处不符合C++标准的写法:
- 私有成员
buy未初始化,栈上创建的类对象成员默认值是未定义的随机值 - 标准C++要求
main函数必须声明返回值类型为int
- 私有成员
修正方案
需要修改的代码片段
- 修正
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;} };
- 修正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
相关产品推荐
相关产品推荐

