创建新的"dynamic"对象?

Creating new "dynamic" objects?

本文关键字:对象 dynamic 创建      更新时间:2023-10-16

创建动态(不确定这是否是正确的单词)对象的最佳方法是什么?例如,如果我运行以下内容:

Person man[10];

cout << "MENU" << endl;
cout << "1. Add a person to the list" << endl;
cout << "2. Delete a person from the list" << endl;
cout << "3. Change a person's information'" << endl;
cout << "4. Locate a person by ID number" << endl;
cout << "5. Locate a person by last name" << endl;
cout << "6. Print the list on the screen" << endl;
cout << "7. Load the list from a file" << endl;
cout << "8. Save the list to a file" << endl;
cout << "9. Exit the program" << endl;
cin >> a;
if (a == 1) {
        if (i <= 10) {
            Person man[i];
            cout << "Please enter your last name: " ;
            cin >> last; 
            man[i].setLastName(last);
            i++;
            cout << man[i].getLastName();
        }
}

当我运行这个时,我可以输入我的姓氏,但是当我按 Enter 时,程序停止运行。这是什么原因,有没有更好的方法来创建这些对象"配置文件"?

谢谢,如果这是一个愚蠢的问题,我很抱歉。

原因是您的整个程序只接受一个输入cin >> a;然后检查它是否等于 1。阻止后,程序无事可做。所以你的程序终止了。

如果你想编辑你的 10 人 obj 的所有名字和姓氏,你最好创建一个循环来做到这一点。对于循环,你可以谷歌搜索/while。

下面是一个示例:

    int i;
    while(cin >> i)
    {
        if(i == 9)
            return;
        else if[....]
    }

当你说动态时,对象分配是通过 new 运算符进行的。在您的代码中,数组已经声明了 10 个元素(静态分配)。因此,在代码中,您没有执行动态分配。对于动态分配,添加一个可以返回新 Person 对象的函数。在此函数中,使用 new 运算符创建一个对象并返回此对象。这样,您可以动态添加新对象。

有关动态分配的更多详细信息,请参阅新运算符。