Подтвердить что ты не робот

Является ли термин "метод" определенным стандартом С++?

Термин "метод" часто используется для обсуждения кода на С++. Имеет ли автономный термин четко определенный смысл в С++ или он неоднозначен? Допустимо ли использовать этот термин сам по себе или он должен быть квалифицирован (например, "метод класса" или "виртуальный метод" ) или его вообще следует избегать?

4b9b3361

Ответ 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. Некоторые люди используют функции-члены/свободные.