Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.05.2013, 17:16   #1
Procion
 
Регистрация: 29.04.2013
Сообщений: 9
По умолчанию вопрос по классам и объектам

3дравствуйте! Только что начал изучение ООП, всвязи с чем возникли тупые вопросы новичка
итак, собственно сам вопрос:
допустим, я создал класс с двумя полями и методом. затем, создаю два объекта этого класса. теперь в каждом созданном объекте память будет выделяться для полей? и каждый объект будет содержать копию метода?? Заранее спасибо за ответы!
Procion вне форума Ответить с цитированием
Старый 08.05.2013, 17:22   #2
220Volt
Форумчанин
 
Регистрация: 14.12.2012
Сообщений: 671
По умолчанию

Нет, объекты занимают память только для своих данных и для указателя на таблицу виртуальных функций (если виртуальные функции есть).
220Volt вне форума Ответить с цитированием
Старый 09.05.2013, 11:07   #3
Procion
 
Регистрация: 29.04.2013
Сообщений: 9
По умолчанию

получается, метод уникален для каждого объекта своего класса? т.е. любой объект класса использует метод как свой?
Procion вне форума Ответить с цитированием
Старый 09.05.2013, 11:21   #4
Igor95
Форумчанин
 
Регистрация: 03.01.2013
Сообщений: 388
По умолчанию

Видимо да, если каждому объекту соответсвует уникальное значение свойства, а метод как раз и оперирует со свойствами...
Ведь для каждого обеъкта автоматически вызывается свой деструктор и конструктор... А ведь они специальные методы

Последний раз редактировалось Igor95; 09.05.2013 в 11:23.
Igor95 вне форума Ответить с цитированием
Старый 09.05.2013, 11:27   #5
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

на практике внутри компилятора разницы между:
Код:
class A
{
public:
    int i;
    void set(int _i)
    {
         i=_i;
    }
};
и
Код:
class A
{
public:
    int i;
};

void A_set(A* this,int i)
{
    this->i=i;
};
практически нету.
метод принимает указатель на объект, как неявный параметр(доступен через this)

Цитата:
Ведь для каждого обеъкта автоматически вызывается свой деструктор и конструктор... А ведь они специальные методы
конструктор есть, отчасти просто функция, принимающая неявным аргументом указатель на объект для создания.
деструктор так же(у виртуального просто адрес для вызова берем из VMT, тк он не известен сразу)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.

Последний раз редактировалось Пепел Феникса; 09.05.2013 в 11:29.
Пепел Феникса вне форума Ответить с цитированием
Старый 09.05.2013, 11:56   #6
Procion
 
Регистрация: 29.04.2013
Сообщений: 9
По умолчанию

наверное я понял... при создании объекта выделяется память только для его полей, а методы помещаются, как и любые функции, в область кода и умеет работать с любым объектом своего класса, имея неявную ссылку на тот объект, для которого он был вызван?
Procion вне форума Ответить с цитированием
Старый 09.05.2013, 12:19   #7
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

почти, методы смогут принять любой совместимый с указанным классом объект(указатель на него) как параметр.
то есть для потомков повторный код не генерируется.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вопрос по "классам" С++! Eniwent Помощь студентам 5 11.11.2011 20:43
Вопрос по классам, обработчикам событий... Vadik(R) Помощь студентам 4 01.11.2010 11:10
Вопрос по классам делфи и их использованию. Solrainer7 Общие вопросы Delphi 6 12.07.2010 19:16
вопрос по объектам на паскале demonara Помощь студентам 7 09.09.2009 20:52
С++ Интересный вопрос по объектам: Познающий Помощь студентам 12 11.05.2009 19:26