Цитата(AHTOXA @ Oct 17 2009, 15:49)

Если метод не объявлен виртуальным, то у них ничего не выйдет

Конечно! Потому, что если функция не виртуальная - то это не метод!
Цитата(AHTOXA @ Oct 17 2009, 15:49)

Давай я так скажу - виртуальные методы - те, которые потомки могут изменить, невиртуальные - которые не должны меняться. В этом состоит гибкость наследования. Но и те и другие - методы.
Виртуальные методы - это масло масленное.

Если функция гарантировано не переопределяется, то это не метод для потомка, это просто унаследованный код. Методом оно станет только тогда, когда потомок имеет возможность реализовать эту функцию своим способом - т.е. у него свой способ = метод, отличающийся от споcоба/метода родителя.
Например:
Код
class TSlon
{
public:
...
void set_data(int x);
virtual void set_request() { if(...) PORT0 ^= ...;}
...
};
class TMamont : public TSlon
{
public:
...
int blink_led();
virtual void set_request() { for(...) { ... } }
...
}
Ну, и какие же TSlon::set_data и TMamont::blink_led методы, если у них целевое назначение совершенно разное? Они - просто разнокачественный код. Обычный код, никак не связанный между собой по смыслу. А вот их виртуальные функции set_request - это функции, которые имеют одинаковое целевое назначение (сделать запрос), но способ реализации этого у них совершенно разный. Методы достижения разные. Поэтому они - методы.
Цитата(AHTOXA @ Oct 17 2009, 15:49)

То есть, разработчик базового класса управляет возможностью переопределения методов этого класса.
Скажем, есть метод AddRef() у хитрого указателя. Его переопределять опасно, он должен действовать одинаково для всех потомков. Поэтому он будет невиртуальным. Но ведь он не перестанет от этого быть методом?
Перестает. Потому, что тут нету никакого способа/метода. Есть просто статический код, который не меняется во всей иерархии.
Цитата(AHTOXA @ Oct 17 2009, 15:49)

Почему не связанный? Он очень даже связан. Он может вызывать другие виртуальные методы в нужном порядке. Он может обеспечивать общую для всей иерархии логику. Он - метод, просто неизменяемый, инвариантный. И это не метод реализации (это уже немного другая область, и другой термин), а метод класса. В смысле - действе.
Вдумайся в смысл слов "метод" и "действие". Чувствуешь разницу?

Вот "действие" - адекватное обозначение для термина "функция-член". А "метод" - это всегда по смыслу способ. А не действие.
Цитата(AHTOXA @ Oct 17 2009, 15:49)

Что касается "метода реализации" - это уже другая область, типа паттерны проектирования.
Э, нет. Паттерн проектирования - это совокупность приемов, применяемых для достижения. В некотором смысле это - да, метод, но это не метод реализации
общего для родственных классов действия, а метод - способ, достигающий с помощью определенных организационно-программыных подходов нужного результата.
Цитата(AHTOXA @ Oct 17 2009, 15:49)

То есть, все неправы?

Книжки вроде очень уважаемые.
В этом вопросе, к сожалению, да. Программисты, там, может, и сильные, но ООП - это отдельная кухня, там свои правила. И не самая часто применяемая парадигма в С++. Все применяется к месту.
Цитата(AHTOXA @ Oct 17 2009, 15:49)

Я вчера ещё у Александреску нашёл употребление слова метод по отношению к невиртуальной функции.
В оригинальном тексте или в переводе?
Цитата(AHTOXA @ Oct 17 2009, 15:49)

По-моему, единственное упоминание у Страуструпа (причём очень нечёткое) не тянет на устоявшуюся терминологию.
Устоявшаяся она в ООП. Оттуда и ноги растут. И в контексте С++ мнение Страуструпа вполне перетягивает все остальное.

Цитата(AHTOXA @ Oct 17 2009, 15:49)

Во-первых, где это чёткое определение? Приведи пожалуйста. А во-вторых, почему это чёткое определение относится только к виртуальным функциям С++?
Ты сам нарыл его в педивикии.

Копать надо в источниках по ОО, а не в просто книжках по С++, где и ООП-то рассматривается весьма поверхностно.
Цитата(AHTOXA @ Oct 17 2009, 15:49)

Невиртуальные функции разве не наследуются? Разве они не являются точно таким же механизмом ООП?
Наследуются. Но механизмом ООП не являются. Механизмы ООП ориентированы на возможности управления множеством
разных объектов
единообразным способом, и базируется такая возможность на "родственности" этих
разных объектов. Обычные невиртуальные функции-члены тут мимо кассы.
P.S. Что-то мне думается, что дискуссия на эту тему вряд ли кому-то еще тут интересно. Поэтому, дабы не захламлять форум, предлагаю перенести обсуждение в асю/джаббер.

Ты как?