Подтвердить что ты не робот

С++ - структура против класса

Возможные дубликаты:
C/С++ Struct vs Class
Что такое типы POD на С++?

Привет,

В С++ В двух словах, в главе 6: классы, ниже Спецификаторы доступа, упомянуто следующее:

В определении класса по умолчанию доступ для членов и базовых классов частный. В определении структуры default является общедоступным. Это единственное разница между классом и struct, хотя по соглашению некоторые программисты используют struct только для POD классов и использовать класс для всех остальных классы.

Мои вопросы здесь:

  • Разве нет другой разницы между классами и структурами в этих структурах, которые не содержат функций и просто хранят данные?
  • Что такое классы POD? И что здесь подразумевается под всеми другими классами? Существуют ли специальные классы?

Спасибо.

4b9b3361

Ответ 1

Другое отличие состоит в том, что

template<class T> ...

разрешено, но

template<struct T> ...

нет.

Ответ 2

Вы могли бы доказать себе, что нет другой разницы, пытаясь определить функцию в структуре. Я помню, что даже мой профессор колледжа, который преподавал о структурах и классах на С++, был удивлен, узнав об этом (после исправления студентом). Я верю в это. Это было забавно. Профессор продолжал говорить, каковы различия, и студент продолжал говорить: "На самом деле вы тоже можете это сделать в структуре". Наконец, проф. спросил "ОК, в чем разница", и студент сообщил ему, что единственная разница была доступность по умолчанию для участников.

Быстрый поиск Google предполагает, что POD означает "Обычные старые данные".

Ответ 3

Классы POD представляют собой классы данных Plain-Old, которые имеют только данные и ничего больше. Есть несколько вопросов о stackoverflow о том же. Найдите здесь.

Кроме того, вы можете иметь функции как члены структур в С++, но не в C. Вам нужно иметь указатели на функции как члены в структурах на C.

Ответ 4

Хорошо, POD означает простые старые данные. Обычно это означает structs без каких-либо методов, потому что эти типы затем используются для структурирования нескольких данных, которые принадлежат друг другу.

Что касается структур, не имеющих методов: я уже не раз видел, что у структуры есть методы, и я не чувствую, что это было бы неестественно.