是否可以创建动态对象?

时间:2014-02-01 17:14:38

标签: c++

当我的朋友问我时,我和我的朋友正在考虑一个C ++程序,“如果c ++允许我们创建动态对象会不会很好”

然后我问他的意思是什么,他告诉我这个故事......

假设在我的C ++程序中,我有一个定义,其中包含一些数据成员。考虑使用以下

class Student
{
   char Skill[15];
   int Age;
};

现在是否可以创建一个名称将是用户输入的对象?

例如

假设在我的主程序中我有一个像cout << "Enter Name: ";这样的代码行。现在请注意,用户输入的任何内容都将存储在我在 main() 功能中创建的变量中。因此,假设用户将其姓名输入为“XYZ”(显然没有引号)。故事结束......

现在他问我“是否可以使用用户输入的名称创建 class Student 的对象?!(可能在 { {1}} )“ main()

所以我想到了这个并且还没有得到任何答案,因此我发布这个问题,希望我能得到答案......那么可能吗?!

2 个答案:

答案 0 :(得分:2)

没有。这是不可能的。您需要有一些静态名称来引用您在堆栈上创建的新对象。即,即使你可以创建它,你怎么可能在程序的后期引用它,因为当你编写程序时你不知道它将被称为什么?

答案 1 :(得分:1)

这是关联容器的用途。

struct Student {
    unsigned age;
};

std::map<std::string, Student> students;

void enter_student()
{
    Student st;
    std::string name;
    std::cout << "Enter name and age: ";
    std::cin >> name >> st.age;
    students[name] = st;
}