创建动态(不确定这是否是正确的单词)对象的最佳方法是什么?例如,如果我运行以下内容:
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时程序停止运行。这是什么原因,是否有更好的方法来创建这些对象“配置文件”?
谢谢,如果这是一个愚蠢的问题,我很抱歉。
答案 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运算符。