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