Я рассматриваю реализацию API, который я использую.
Я заметил, что структура наследуется от класса, и я сделал паузу, чтобы обдумать это...
Во-первых, я не видел в руководстве на С++, которое я изучил, с тем, что структура может наследовать из другой структуры:
struct A {};
struct B : public A {};
Я предполагаю, что в таком случае struct B наследует от всех данных в stuct A. Можем ли мы объявить публичных/частных членов в структуре?
Но я заметил это:
class A {};
struct B : public A {};
Из моего онлайн-справочника по С++:
Класс - это расширенная концепция структуры данных: вместо хранения только данных она может содержать как данные , так и функции.
Является ли указанное наследование действительным, даже если класс A имеет некоторые функции-члены? Что происходит с функциями, когда структура наследует их? А как насчет обратного: класс, наследующий от структуры?
Практически, у меня есть это:
struct user_messages {
std::list<std::string> messages;
};
И я использовал для этого итерацию как это foreach message in user_messages.messages
.
Если я хочу добавить функции-члены в свою структуру, могу ли я изменить свое объявление и "продвинуть" его в класс, добавить функции и все-таки перебрать мои user_messages.messages, как и раньше?
Очевидно, что я все еще новичок, и я все еще не понимаю, как структуры и классы взаимодействуют друг с другом, какая практическая разница между ними и каковы правила наследования...