Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Зачем нужен объект класса в с++

Кузнецов Арсений Ученик (142), открыт 1 неделю назад
Ну вот допустим код:
 MyClass m;
m.PrintMessage("Hello World!");
Почему надо обязательно писать MyClass m??? Почему нельзя обратиться напрямую как то так:
 MyClass.PrintMessage("Hello World"); 
В чем разница? В моих глазах это выглядит так, будто этим действием я зачем то копирую класс в переменную m и теперь могу ей пользоваться.
3 ответа
Федор Новиков Искусственный Интеллект (352301) 1 неделю назад
в экземпляре класса могут быть свои поля данных. Если начинать с голого Си, то было бы понятнее: есть структура и есть функции по работе с этой структурой. Не создавая экземпляра, метод может обращаться только к статическим полям данных.
Редис Александрович Оракул (77476) 1 неделю назад
В моих глазах это выглядит так, кто то читал букварь по с++ ну а кто то пропустил этот момент. Ну и там поидее должно быть написано, что сначала обьявляется класс, а потом из него создаётся обьект который обладает заданными методами к которым можно обращаться для каких то своих целей, например для m.PrintMessage("Hello World!"); С одного класса можно создать множество обьёктов, таким образом при выполнении MyClass.PrintMessage("Hello World"); ты к какому обьёкту обращаешся ? Поэтому логичнее из MyClass создать обьект → m и от него требовать , что то сделать.
ПапаВысший разум (122560) 1 неделю назад
Вообще забавно, когда люди, не имеющие даже зачатков абстрактного мышления, начинают рассуждать, что в языках нужно или не нужно. Ему букварь нужен не по C++, а по элементарной логике, и я даже не знаю, по чему ещё. Бывают ли учебники, в которых объясняется, чем понятие "стол" отличается от конкретного стола конкретной формы и размеров, из конкретного материала? Мне кажется, это понимают даже африканские дикари, выросшие с автоматом Калашникова в руках, вместо учебники. Но не понимают дегенераты, выросшие на доте.
Редис Александрович Оракул (77476) Папа, по моим ощущениям от ответов последнего времени, средний школьник выпускного класса примерно равен уровню подготовки 8 класса тоже обычной советской школы, а выпускник института, допустим технической специальности, инженерной, примерно равен уровню 11 классника советской школы. Может это на ответах такая выборка и кому интереснее ушли и на какие-нибудь локализованные стэковерфлоу или другие платформы, но в целом уровень конечно удивляет. Это я называю, купили родители планшет
ФермаКактусов Высший разум (182545) 1 неделю назад
  1. В C++, как и в других объектно-ориентированных языках программирования, класс определяет шаблон или чертёж, который описывает, какие данные и методы будут у объектов, созданных из этого класса. Объект класса — это экземпляр класса, который реализует определённые в классе характеристики и поведение.
  2. Когда вы пишете `MyClass m;`, вы создаёте объект `m` класса `MyClass`. Это означает, что вы выделяете память для хранения данных, определённых в классе, и можете вызывать методы, которые действуют на эти данные.
  3. В строке `m.PrintMessage("Hello World!");` вы вызываете метод `PrintMessage` для объекта `m`. Этот метод может использовать или изменять данные объекта `m`, если это предусмотрено логикой класса.
  4. Вы не можете напрямую вызвать `MyClass.PrintMessage("Hello World");`, потому что `PrintMessage` — это не статический метод класса. Статические методы принадлежат классу в целом и могут быть вызваны без создания объекта класса. Но обычные методы, такие как `PrintMessage`, требуют наличия конкретного объекта, потому что они могут оперировать с данными, которые уникальны для каждого объекта.
  5. Таким образом, `MyClass m;` не копирует класс, а создаёт объект, который является экземпляром класса и содержит свои собственные данные и методы, определённые в классе. Это позволяет работать с конкретными данными и состоянием объекта, что является ключевым аспектом объектно-ориентированного программирования.
Похожие вопросы