Может ли кто-нибудь устранить неоднозначность атрибутов и методов класса для С++? У меня сложилось впечатление, что атрибут означает любую переменную-член, а метод означает любую функцию-член.
Спасибо
Вопрос
Может ли кто-нибудь устранить неоднозначность атрибутов и методов класса для С++? У меня сложилось впечатление, что атрибут означает любую переменную-член, а метод означает любую функцию-член.
Спасибо
Определите "правильно".
Обращение к элементам данных и функциям-членам как к "атрибутам/свойствам" и "методам" соответственно является обычной практикой - это общая формулировка ООП. ("атрибуты" используются в C++ для чего-то еще, так что это вполне может быть источником путаницы.)
Однако стандарт C++ не использует эти термины (кроме атрибутов, конечно, как объяснялось выше). Если вы не хотите ничем рисковать и всегда быть корректным, используйте "члены данных" и "функции-члены".
Но если вы хотите объяснить C++ только Java-программисту, вы можете обойтись без "свойства" и "метода" в начале.
Я бы не стал этого делать. Хотя это можно понять в общем контексте объектно-ориентированного программирования, в C++ это будет запутанно, поскольку атрибут имеет точное определение в стандарте, которое не совпадает с определением члена данных.
Атрибуты класса будут транслироваться его членам. Метод - это не то же самое, что функция-член в целом. Но "в объектно-ориентированном программировании метод - это подпрограмма (или процедура), связанная с классом". - Википедия.
Проще говоря, атрибут описывает что-то: "Одним из атрибутов этой машины является то, что она довольно длинная" или "одним из атрибутов гигантской панды является ее поразительный черно-белый цвет".
В XML атрибуты используются для добавления дополнительной информации в тег, например, <species id=3212>Ailuropoda melanoleuca<common_name>Giant Panda</common_name></species> - id - атрибут, Ailuropoda melanoleuca - значение, common_name тег внутри species.
Но я называю переменные в классе "переменными-членами", а функции в классе "функцией-членом" или "методом".
Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.