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

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

相关产品推荐
方舟 Agent Plan

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

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