C++开发流媒体服务时输出电影评分显示巨大随机数
C++ movie类评分输出随机数问题排查
核心问题
你实现的带参构造函数movie(int, std::string, int, std::string, int)仅通过初始化列表完成了父类video的属性赋值,没有将传入的_rating参数赋值给类自身的rating成员变量。int属于C++基础数据类型,若未显式初始化,会读取对应内存位置残留的随机值,这就是你看到输出无意义巨大数字的直接原因。
修复方案
修改带参构造函数,在初始化列表中补充rating成员的赋值即可,修复后的构造函数代码如下:
movie::movie(int _id, std::string _name, int _length, std::string _genre, int _rating) : video(_id, _name, _length, _genre), rating(_rating){}
如果习惯在构造函数体内赋值,也可以用如下写法,效果一致:
movie::movie(int _id, std::string _name, int _length, std::string _genre, int _rating) : video(_id, _name, _length, _genre){ rating = _rating; }
可选优化建议
- 你声明的
getRating()方法返回值类型为float,但rating成员是int类型,如果后续需要支持小数评分,记得同步调整成员变量类型,当前整数评分场景下不会触发运行错误。 - 遍历电影数组的循环条件
i <= 4在当前数组长度为5时可正常运行,更通用的写法建议改为i < 5,后续调整数组长度时更不容易出现越界问题。
内容的提问来源于stack exchange,提问作者Luis Garza
相关产品推荐
相关产品推荐

