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();?谢谢
是的,levelA是0. C++允许从枚举值到int的静默转换(与C#不同,它需要显式转换).
student[levelA] = new Student(); 表示在堆中分配内存,在该内存中创建一个Student对象,并将新对象的地址存储到student向量的第一个元素中.但是,向量中没有必要的元素 - 当它被创建时,它的长度为0 - 所以这实际上是未定义的行为.
student.push_back(new Student()); 将新对象添加到向量的下一个(当前第一个)元素.
| 归档时间: |
|
| 查看次数: |
156 次 |
| 最近记录: |