C++如何修改现有代码实现指定数量Dog类对象的读写操作?
代码修改说明
原代码的核心问题是仅声明了单个Dog类对象,无法存储多条狗的属性。你需要创建可容纳n个Dog实例的容器,再通过循环完成批量录入和打印操作,具体修改如下:
完整修改后代码
#include <iostream> #include <vector> #include <string> using namespace std; // 补充Dog类定义(原代码省略的部分,需保留保证编译通过) class Dog { private: string name; float height; float weight; string color; public: void readDog(); void printDog(); }; void Dog::readDog() { cout << "Name: "; cin >> this->name; cout << "height: "; cin >> this->height; cout << "weight: "; cin >> this->weight; cout << "Color: "; cin >> this->color; } void Dog::printDog() { cout << "Name: " << this->name << endl; cout << "Height: " << this->height << endl; cout << "Weight: " << this->weight << endl; cout << "Color: " << this->color << endl; cout << "------------------------" << endl; // 新增分隔线,区分不同狗的信息 } int main() { int n; cout << "Number of dogs to introduce: "; cin >> n; vector<Dog> dogs(n); // 创建可容纳n个Dog实例的动态数组 // 循环录入n条狗的信息 for(int i=0; i<n; i++){ cout << "\n请输入第" << i+1 << "条狗的信息:" << endl; dogs[i].readDog(); } // 循环打印n条狗的信息 cout << "\n===== 已录入的" << n << "条狗的信息如下 =====" << endl; for(int i=0; i<n; i++){ dogs[i].printDog(); } return 0; }
核心修改点
- 引入
vector容器存储多个Dog实例,避免普通可变长数组的兼容性问题 - 新增两次循环:第一次循环遍历容器完成所有狗的信息录入,第二次循环遍历完成所有信息打印
- 新增分隔符和提示文字,提升输出可读性
如果你使用的编译器支持C99可变长数组扩展,也可以直接用
Dog dogs[n];替换vector<Dog> dogs(n);,无需引入<vector>头文件,但使用vector兼容性更强,符合C++通用规范。
内容的提问来源于stack exchange,提问作者my_name
相关产品推荐
相关产品推荐

