2

我是 C++ 编程的新手,但是我用 Java 做过一些编程,所以我对 OO 编程并不完全陌生。

我要做的是创建结构,然后创建该结构的对象数组。我试图保持该数组始终排序(使用新手排序),所以我所做的是定义结构,然后创建该结构的数组 [50],并帮助该结构的变量。然后每个新的不同变量(姓名、姓氏、成绩等)条目都来自我放入辅助变量的用户。然后,当用户完成在辅助变量中输入所有数据时,我会继续找出该对象应该放在数组中的哪个位置。

这是示例代码,请尽量保持简单。

struct student {
    //declaring variables that student should have
};

student students[50];
int numOfStud=0;

while (a=='y' && numofStud<50) { //a=='y' just means user wants to add more students
    student input= new student;
            //adding various data to student     
            //adding input into an array of students using variation of insertion sort algorithm
cout << "want to add more students?";
cin >> a;
}

当我尝试编译这个时,我在student input= new student. 所以我现在有点困惑。

题外话:我还有一个关于当你这样做时会发生什么的问题,例如students[0]=input;我是在这里创建另一个对象副本,还是我只是创建另一个指针(如在 java 中),因此学生 [0] 和输入都将指向同一个对象?

谢谢你们的帮助!

4

2 回答 2

6

成功调用new T返回指向动态分配T对象的指针,因此您尝试student从指向student此处的指针实例化 a:

student input= new student;

您只需要

student input;

当你这样做

students[0]=input;

您正在将 的值分配inputstudent位于 中的实例中students[0]。所以students[0]input将是不同的对象。

于 2013-05-08T15:32:34.580 回答
2

new关键字用于使用指针在堆上分配内存。你只需要

 student input;
 // fill "input" with data
于 2013-05-08T15:33:12.797 回答