Термин "метод" часто используется для обсуждения кода на С++. Имеет ли автономный термин четко определенный смысл в С++ или он неоднозначен? Допустимо ли использовать этот термин сам по себе или он должен быть квалифицирован (например, "метод класса" или "виртуальный метод" ) или его вообще следует избегать?
Является ли термин "метод" определенным стандартом С++?
Ответ 1
Я бы полностью избегал этого термина, так как ясно, что вы подразумеваете под "функцией-членом", но не "методом", - что вы задали этот вопрос достаточно убедительно.
Однако нормативные выражения слова "метод" в стандарте С++ 14:
-
В списке содержимого:
17.5 Метод описания (информативный)
Это повторяется в заголовке этого раздела.
-
[basic.compound]:
Эти методы типов построения могут быть применены рекурсивно;
-
[cpp.include]
Метод, с помощью которого последовательность токенов предварительной обработки между парами токенов
<
и a>
или парой символов"
в один заголовок, для которого используется препроцессор предварительной обработки. -
[library.general]
В следующих подписях описываются определения (17.3), метода описания (17.5), [..]
-
В таблице 32 указан
FLT_EVAL_METHOD
. -
На этапе 2 из
num_get
do_get
:Для арифметических типов вставляются символы
punct.thousands_sep()
в последовательность, определяемую значением, возвращаемымpunct.do_grouping()
с использованием метода, описанного в 22.4.3.1.2 -
[forwardlist.modifiers]:
В противном случае вставляет
sz - distance(begin(), end())
элементы в конце список, в котором каждый новый элементe
инициализируется методом, эквивалентным вызовуallocator_traits<allocator_type>::construct(get_allocator(), std::addressof(e), c)
. -
[filebuf.virtuals]:
Ведет себя в соответствии с описанием
basic_streambuf<charT,traits>::uflow()
, со специализацией, что a последовательность символов считывается с ввода с помощью того же метода, что и используетсяunderflow
.
Термин, очевидно, никогда не ссылается на "функцию-член".
Ответ 2
Термин метод не определен в стандарте С++. Терминология использует функцию-член.
Bjarne Stroustrup однако определяет термин метод в своей glossary как виртуальную функцию-член. Таким образом, это свидетельствует о том, что этот термин является приемлемым.
Ответ 3
стандарт С++ не упоминает термин method
. Следует отметить, что официальный официальный С++ FAQ использует этот термин, но описывает функцию virtual
; a простой поиск Google показывает больше случаев этого термина.
Я никогда не видел термин method
в среде IDE (Visual Studio), но я видел термин member function
. По-моему method
- термин "один размер подходит всем".
Ответ 4
Термин метод исторически использовался как синоним процедуры объекта. Учитывая, что объект имеет как данные, так и поведение, именно такое поведение называется методом. Отслеживание назад, я мог бы найти ссылку на использование метода term при обращении к версии MIT ALGOL, AED-0
Версия MIT ALGOL, AED-0, связанные структуры данных ( "сплетения", в том диалект) непосредственно с процедурами, предвосхищая то, что было названо позже "сообщения", "методы" и "функции-члены".
В течение многих лет метод был неотъемлемой частью объектно-ориентированного анализа и проектирования и объектно-ориентированного программирования. Теперь С++ развился как процедурный язык, где он расширил C процедурным языком, чтобы иметь объектно-ориентированные возможности. C имел концепцию структуры, а элементы данных назывались членами. Обратитесь Методы на С++. Чтобы не разорвать линию, С++ продолжал называть элементы структурированного и нового класса жанра в качестве членов.
Теперь, чтобы различать данные и функции, вместо введения новой терминологии, она расширила эту терминологию, чтобы называть члены данных и функции-члены. Функции-члены, поддерживающие динамическое связывание, назывались виртуальными функциями.
Поэтому, строго говоря, официальные ссылки воздерживаются от использования терминологических методов при обращении к функциям-членам. Терминология наиболее распространена среди людей с более объектно-ориентированным фоном. Поэтому, если вы хотите оставаться недвусмысленным, лучше всего использовать терминологию как
- член данных
- функция-член
- виртуальные функции
Ответ 5
Вот мой анализ слова метод.
Я просмотрел официальную документацию (стандарты, спецификации и т.д.) на нескольких языках программирования.
http://componentsprogramming.com/using-the-right-terms-method/
Адекватная таксономия (не зависящая от каких-либо языков программирования) будет опубликована в следующей статье.
В отношении С++ правильная терминология: функция member/non-member. Некоторые люди используют функции-члены/свободные.