Может ли кто-нибудь устранить неоднозначность атрибутов и методов класса для С++? У меня сложилось впечатление, что атрибут означает любую переменную-член, а метод означает любую функцию-член.
Спасибо
Может ли кто-нибудь устранить неоднозначность атрибутов и методов класса для С++? У меня сложилось впечатление, что атрибут означает любую переменную-член, а метод означает любую функцию-член.
Спасибо
Определите "правильно".
Обращение к элементам данных и функциям-членам как к «атрибутам/свойствам» и «методам» соответственно является обычной практикой — это общая формулировка ООП. ("атрибуты" используются в C++ для чего-то еще, так что это вполне может быть источником путаницы.)
Однако стандарт C++ не использует эти термины (кроме атрибутов, конечно, как объяснялось выше). Если вы не хотите ничем рисковать и всегда быть корректным, используйте «члены данных» и «функции-члены».
Но если вы хотите объяснить C++ только Java-программисту, вы можете обойтись без «свойства» и «метода» в начале.
class pie { class fruit apple; bool hot; };
, то как бы вы назвали apple
и как бы вы назвали hot
? Спасибо.
- person user2672807; 17.08.2013
Я бы не стал этого делать. Хотя это можно понять в общем контексте объектно-ориентированного программирования, в C++ это будет запутанно, поскольку атрибут имеет точное определение в стандарте, которое не совпадает с определением члена данных.
Атрибуты класса будут транслироваться его членам. Метод — это не то же самое, что функция-член в целом. Но «в объектно-ориентированном программировании метод — это подпрограмма (или процедура), связанная с классом». - Википедия.
Проще говоря, атрибут описывает что-то: «Одним из атрибутов этой машины является то, что она довольно длинная» или «одним из атрибутов гигантской панды является ее поразительный черно-белый цвет».
В XML атрибуты используются для добавления дополнительной информации в тег, например, <species id=3212>Ailuropoda melanoleuca<common_name>Giant Panda</common_name></species>
- id
— атрибут, Ailuropoda melanoleuca
— значение, common_name
тег внутри species
.
Но я называю переменные в классе "переменными-членами", а функции в классе "функцией-членом" или "методом".
attributes
в C++ таким образом, поскольку имяattributes
теперь относится к совершенно не связанной части языка. - person Mooing Duck   schedule 17.08.2013