创建新的"dynamic"对象?
Creating new "dynamic" objects?
创建动态(不确定这是否是正确的单词)对象的最佳方法是什么?例如,如果我运行以下内容:
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 运算符创建一个对象并返回此对象。这样,您可以动态添加新对象。
有关动态分配的更多详细信息,请参阅新运算符。
相关文章:
- 什么时候调用组成单元对象的析构函数
- 对RValue对象调用的LValue ref限定成员函数
- CMake-按正确顺序将项目与C运行时对象文件链接
- 空基优化子对象的地址
- 将对象数组的引用传递给函数
- 你能重载对象变量名本身返回的内容吗
- C++使用整数的压缩数组初始化对象
- 找不到成员对象:没有名为get_event()的成员,也处理多态性和向量
- 将对象移动到std::shared_ptr
- 代理对象的常量正确性
- 提升 ASIO 无法识别计时器对象
- 将Ref对象作为类成员
- 将包含C样式数组的对象初始化为成员变量(C++)
- 如何返回一个类的两个对象相加的结果
- 使用std::函数映射对象方法
- 是否需要删除包含对象的"pair"?
- 如何在自删除后将对象设置为nullptr
- 迭代时从向量和内存中删除对象
- 当从此到子类中的新对象时,将显示警告"destination for this 'memcpy' call is a pointer to dynamic class..."
- 创建新的"dynamic"对象?