Массив объектов в C++
Массив объектов - это C-массив, в каждой ячейке которого лежит свой объект класса.
Длину задают числом в квадратных скобках после типа.
В фигурных скобках перечисляют сами объекты:
User("john", 21) и дальше через запятую.
Запишем класс 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 users[3] = {
User("john", 21),
User("eric", 22),
User("kyle", 23)
}
;
std::cout << users[1].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 users[2] = {User("john", 21), User("eric", 22)}
;
std::cout << users[0].name << "\n";
std::cout << users[1].age << "\n";
return 0;
}
Если размер известен заранее, массив можно объявить без списка значений - тогда у класса нужен конструктор по умолчанию. Запишем класс с таким конструктором:
#include <iostream>
#include <string>
class User {
public:
std::string name;
int age;
User() : name(""), age(0) {}
User(std::string name, int age) : name(name), age(age) {}
};
Создадим массив из двух элементов и зададим поля первому:
int main() {
User users[2];
users[0].name = "john";
users[0].age = 21;
std::cout << users[0].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 users[3] = {
User("john", 21),
User("eric", 22),
User("kyle", 23)
}
;
for (const User& user : users) {
std::cout << user.name << "\n";
}
return 0;
}
Сделайте класс City с полями name
и population и конструктор с двумя
параметрами.
Создайте C-массив из трех объектов City.
Выведите название каждого города в консоль.
Дан массив объектов User:
User users[3] = {
User("john", 21),
User("eric", 22),
User("kyle", 23)
};
Посчитайте сумму возрастов всех пользователей. Выведите результат.