这个c ++声明的目的是什么?

lun*_*una 0 c++ syntax

struct Student {

         Student(){

         }
   };
Run Code Online (Sandbox Code Playgroud)

和枚举:

   enum studenttype_t { levelA = 0, levelB = 1, levelC = 2 };
Run Code Online (Sandbox Code Playgroud)

然后在其他地方声明:

   vector<Student *> student;
Run Code Online (Sandbox Code Playgroud)

它可以如下使用:

   student[levelA] = new Student();
Run Code Online (Sandbox Code Playgroud)

如果是这样,那student[levelA]意味着什么?是0在这种情况下?什么是最后一个声明的功能,即student[levelA] = new Student();?谢谢

Jam*_*ran 5

是的,levelA是0. C++允许从枚举值到int的静默转换(与C#不同,它需要显式转换).

student[levelA] = new Student(); 表示在堆中分配内存,在该内存中创建一个Student对象,并将新对象的地址存储到student向量的第一个元素中.但是,向量中没有必要的元素 - 当它被创建时,它的长度为0 - 所以这实际上是未定义的行为.

student.push_back(new Student()); 将新对象添加到向量的下一个(当前第一个)元素.