четверг, 14 октября 2010 г.

16. Как определить метод непосредственно внутри класса? А вне класса? Чем эти определения отличаются?

a.
class A {
  int f(){return 0;}
}


b.
class A {
  int f();
}

int A::f(){return 0;}


c. Эти классы практически идентичны, но есть небольшое отличие. Определение первого класса эквивалентено:
class A {
  int f();
}

inline int A::f(){return 0;}


То есть, оно отличается от второго наличием ключевого слова inline. Оно означает, что компилятор постарается(так как это не всегда возможно) заменить вызов этой функции его определением. Рекомендуется не использовать вариант a (желательно использовать эквивалентную запись), так как смешиваются "что делает класс" и "как это делает".

Комментариев нет:

Отправить комментарий

Можно использовать теги <b>, <i>