у них разное назначение для применения, у класса по умолчанию приватный модификатор доступа, у структуры публичный
А ещё msvc по-разному их манглит...
можно пример?
И наследование дефолтное другое
В том отношении, что в классе по умолчания все поля приватные, а в структуре публичные. Это основное отличие. Например: struct Struct {}
clang-tidy ругается на это, сейчас попробую воспроизвести в годболте
Разница в том, что за конструкторы, операторы и public/private в структуре вас могут побить си-шники.
на стак оверфлоу нашёл такое, мб уже неактуально What version of VC++ are you using. There was an error in VC++ 6.0 which meant that it treated struct and class differently, but that's been fixed in later compilers; I don't get any warning with VC++ 2005, for example.
я ща смотрю в godbolt в символы, вроде одинаково
ахахахахах) я до сих пор помню где-то в хедерах msvc #define class struct глаз споткнулся об такое
Нет - если выключено :з
Кто выключен, мсвц?)
https://godbolt.org/z/864EWqoes разные же https://github.com/llvm/llvm-project/blob/fdcf14efd2c5d84252c7b7be9049e68986458270/clang/lib/AST/MicrosoftMangle.cpp#L2915-L2931
та можно и просто дефайн наверное, не?)
а блин, U/V не увидел
а в остальном нету отличий?
не смешивай, структуры для объектов только с публичными полями (как в си), классы для всего остального. Структуры в с++ добавлены чтобы код на си не ломался без слова struct Да, разницы в остальном нет, по крайней мере в стандарте. Считай структура - это класс с приколом, для обратной совместимости
Не согласен. Структура иногда намного удобнее класса. Нырни в std и прочувствовуй.
Почти всегда. Публичный интерфейс есть всегда, а приватного может и не быть(
Обсуждают сегодня