Указатель на объект в C++
Указатель на объект хранит адрес экземпляра в памяти, а не копию полей.
Тип записывают как User*. Оператор &
перед именем объекта дает его адрес. Запишем класс User:
#include <iostream>
#include <string>
class User {
public:
std::string name;
int age;
User(std::string name, int age) : name(name), age(age) {}
};
Создадим объект и запишем его адрес в указатель. Звезда
и скобки (*p) означают объект по этому адресу,
дальше через точку пишут поле. Выведем возраст:
int main() {
User user("john", 21);
User* p = &user;
std::cout << (*p).age << "\n";
return 0;
}
Скобки вокруг *p нужны: сначала берут объект
по адресу, затем читают поле. Запишем класс User:
#include <iostream>
#include <string>
class User {
public:
std::string name;
int age;
User(std::string name, int age) : name(name), age(age) {}
};
Создадим объект, выведем имя и изменим возраст через указатель:
int main() {
User user("john", 21);
User* p = &user;
std::cout << (*p).name << "\n";
(*p).age = 22;
std::cout << user.age << "\n";
return 0;
}
Создайте объект City с названием и населением.
Запишите его адрес в City* и выведите
название через (*p).name.
Дан объект User и указатель User* p
на него. Измените имя через (*p).name
и выведите имя из исходной переменной user.