Стрелка при указателе на объект в C++
Запись (*p).age часто заменяют стрелкой:
p->age. Слева указатель, справа имя поля или метода.
Запишем класс 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";
return 0;
}
Изменение поля через -> видно у исходного объекта,
потому что указатель ведет к тому же экземпляру.
Запишем класс 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;
p->age = 30;
std::cout << user.age << "\n";
return 0;
}
Создайте объект Product с названием и ценой.
Сохраните адрес в Product* и выведите цену
через ->.
Дан указатель User* p на объект User.
Запишите новое имя через p->name
и выведите имя из переменной user.