创建新的“动态”对象?

时间:2016-04-24 18:29:50

标签: c++ object dynamic

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

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时程序停止运行。这是什么原因,是否有更好的方法来创建这些对象“配置文件”?

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

2 个答案:

答案 0 :(得分:0)

原因是你的整个程序只接受一个输入cin >> a;,然后检查它是否等于1.在程序段之后,程序没有任何剩下的工作要做。所以你的程序终止了。

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

以下是一个例子:

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

答案 1 :(得分:0)

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

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