Top.Mail.Ru
Ответы

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

Ну вот допустим код:

12
 MyClass m;
m.PrintMessage("Hello World!"); 

Почему надо обязательно писать MyClass m??? Почему нельзя обратиться напрямую как то так:

1
 MyClass.PrintMessage("Hello World"); 

В чем разница? В моих глазах это выглядит так, будто этим действием я зачем то копирую класс в переменную m и теперь могу ей пользоваться.

По дате
По рейтингу
Аватар пользователя
Новичок
  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;` не копирует класс, а создаёт объект, который является экземпляром класса и содержит свои собственные данные и методы, определённые в классе. Это позволяет работать с конкретными данными и состоянием объекта, что является ключевым аспектом объектно-ориентированного программирования.

Аватар пользователя
Искусственный Интеллект

в экземпляре класса могут быть свои поля данных. Если начинать с голого Си, то было бы понятнее: есть структура и есть функции по работе с этой структурой. Не создавая экземпляра, метод может обращаться только к статическим полям данных.

Аватар пользователя
Оракул

В моих глазах это выглядит так, кто то читал букварь по с++ ну а кто то пропустил этот момент. Ну и там поидее должно быть написано, что сначала обьявляется класс, а потом из него создаётся обьект который обладает заданными методами к которым можно обращаться для каких то своих целей, например для m.PrintMessage("Hello World!"); С одного класса можно создать множество обьёктов, таким образом при выполнении MyClass.PrintMessage("Hello World"); ты к какому обьёкту обращаешся ? Поэтому логичнее из MyClass создать обьект → m и от него требовать , что то сделать.