Почему встроены функции-члены класса?

Я думаю, что мой вопрос уже задавался здесь раньше, я читал их, но все еще немного запутался и поэтому прошу пояснить.

Стандарт C++ говорит, что все функции-члены, определенные внутри определения класса, являются встроенными.

Я также слышал, что компилятор может игнорировать встраивание функции. Будет ли это верно в приведенном выше случае или оно всегда будет встроено, если оно определено внутри определения класса?

Кроме того, какова была причина такого дизайна, делающего все функции, определенные внутри определения класса, встроенными? И какое отношение инлайнинг имеет к исходным и заголовочным файлам?

Обновление:Значит, всегда следует определять свои функции вне класса, если они не встроены, верно?

Обновление 2 от JohnB: Две функции, объявленные внутри определения класса, никогда не могли вызывать друг друга, поскольку каждая из них должна была бы содержать все тело другой функции. Что будет в этом случае?(Уже ответил Эмилио Гаравалья)

28
задан vidit 16 March 2012 в 10:04
поделиться