Я чувствую, что скучаю по некоторым ключевым понятиям о ссылках и указателях;У меня есть код, подобный этому
#include "stdio.h"
struct bar {};
class foo {
public:
foo(){
barPtr = new bar();
};
bar* barPtr;
bar*& getBarPtr() {
return barPtr;
};
};
int main() {
foo fObject;
bar* b = nullptr;
b = fObject.getBarPtr();
printf("B before updates %p\n", b);
printf("barPtr before b updates %p\n", fObject.barPtr);
b = new bar();
printf("B after updates %p\n", b);
printf("barPtr after b updates %p\n", fObject.barPtr);
return 0;
}
Выходные данные
b before updates 0x55db559ace70
barPtr before b updates 0x55db559ace70
b after updates 0x55db559ad2a0
barPtr after b updates 0x55db559ace70
Что я хочу достичь, это изменить то, на что указывает barPtr
с помощью b
, поэтому я делаю getBarPtr
функция возвращает ссылку barPtr
.Я не понимаю, почему изменение b
не меняет barPtr
.