Показаны сообщения с ярлыком метод. Показать все сообщения
Показаны сообщения с ярлыком метод. Показать все сообщения

пятница, 22 октября 2010 г.

24. Влияют ли методы на размер объекта?

Нет. Метод класса един для всех объектов класса, и разумеется, не создается каждый раз при создании объекта.

см. также:
14. Что такое метод? Как вызывается метод?

среда, 13 октября 2010 г.

15. Может ли метод быть приватный?

Конечно.
Представим функцию:
void A::save(){
  if(check()){
    commit();
  }
}

Перед принятием изменений происодит проверка, все хорошо и логично. Если бы нельзя было сделать commit() приватной, то пользователь данного класса мог бы напрямую вызвать commit() без проверки, что может быть опасно.

вторник, 12 октября 2010 г.

14. Что такое метод? Как вызывается метод?

а. Функция, принадлежащая классу. Методу доступны все поля класса (которому он принадлежит).
б.
class A{
  public:
  void f(int p);
};
1. Допустим, есть объявление: A a;
a.f(5); //вызов

2. Если есть указатель на A (A* pa), то:
2а. (*pa).f(5); //вызов
2б. pa->f(5); //синтаксически более удобный и рекомендуемый вызов.

Дополнение:
При инициализации класса A, в памяти создается метод f. На низком уровне он представляет собой обычную функцию с дополнительным параметром this (указатель на объект, вызвавший функцию). Поэтому a.f(5) заменяется компилятором на что-то вроде:
A__f(&a, 5);