如果我有一个名为student的结构 那么这些
之间的区别是什么Student& refFriend;
Student* ptrFriend;
Student valFriend;
答案 0 :(得分:4)
第一个是引用类型,您需要使用Student
实例对其进行初始化。一旦引用实例,就无法更改它以引用另一个实例。它是固定的。
第二个是指向Student
对象的指针。您可以将指针更改为指向另一个Student
对象,您可以根据需要多次执行此操作。如果使用new
创建指向Student
对象的指针,则必须使用delete
在完成对象后取消分配内存,否则程序将泄漏存储器中。
第三个是自动对象。当对象超出范围时,该对象将被销毁。
答案 1 :(得分:3)
这是一个非常基本的问题。我建议找一个关于C ++的入门教程,阅读有关变量,指针(学生*)和参考文献(学生&)。
答案 2 :(得分:2)
<强>学生&安培; refFriend; 强>
这称为对象Student
的引用。
学生* ptrFriend;
这称为指向对象Student
的指针。
学生valFriend;
这是使用变量名Student
声明对象valFriend
。它有时被称为堆栈对象。
答案 3 :(得分:1)
退房: What are the differences between a pointer variable and a reference variable in C++?
深入了解指针和引用之间的差异。
答案 4 :(得分:0)
Student& refFriend; //reference pointer to Student. constant pointer, assigned only once
Student* ptrFriend; //pointer to Student. this is a dynamic pointer. can be reasigned
Student valFriend; //instance of the Student class