C++ Правильно ли вызывать атрибуты переменных-членов класса?

Может ли кто-нибудь устранить неоднозначность атрибутов и методов класса для С++? У меня сложилось впечатление, что атрибут означает любую переменную-член, а метод означает любую функцию-член.

Спасибо


person user2672807    schedule 16.08.2013    source источник
comment
Атрибуты = несколько используемая, но неформальная терминология.   -  person Jon    schedule 17.08.2013
comment
Я бы не стал использовать термин attributes в C++ таким образом, поскольку имя attributes теперь относится к совершенно не связанной части языка.   -  person Mooing Duck    schedule 17.08.2013
comment
Я не думаю, что это неправильно, так как нельзя использовать эти слова или поскольку они не имеют такого значения в C++. Однако слово атрибут используется с C++11 для что-то еще. Пока вы достаточно четко используете свои термины и не слишком далеко отходите от существующих терминов, это не должно быть проблемой.   -  person didierc    schedule 17.08.2013


Ответы (4)


Определите "правильно".

Обращение к элементам данных и функциям-членам как к «атрибутам/свойствам» и «методам» соответственно является обычной практикой — это общая формулировка ООП. ("атрибуты" используются в C++ для чего-то еще, так что это вполне может быть источником путаницы.)

Однако стандарт C++ не использует эти термины (кроме атрибутов, конечно, как объяснялось выше). Если вы не хотите ничем рисковать и всегда быть корректным, используйте «члены данных» и «функции-члены».

Но если вы хотите объяснить C++ только Java-программисту, вы можете обойтись без «свойства» и «метода» в начале.

person Community    schedule 16.08.2013
comment
Я бы назвал это неправильным. Это не то же самое, что метод и функция-член, поскольку в стандарте C++ существует концепция, которая называется атрибут. То есть, если вы говорите о method в C++, люди знают, что method не имеет значения в C++, и по умолчанию они будут использовать термин OO. Если вы используете attribute в разговоре на C++, многие люди поймут, что вы говорите об атрибутах в соответствии со стандартом. - person David Rodríguez - dribeas; 17.08.2013
comment
@DavidRodríguez-dribeas Итак, в основном, #comment26820325_18282330">это. (Опять же, я не утверждаю, что использование общих терминов было бы лучше, чем в Стандарте, возможно, мне следовало бы лучше подчеркнуть это.) - person ; 17.08.2013
comment
Члены класса не являются переменными. Вы можете заменить переменную-член на член данных. - person Johannes Schaub - litb; 17.08.2013
comment
@DavidRodríguez-dribeas У меня было ощущение, что атрибут в любом случае не лучшее слово для использования ... Однако, честно говоря, я не знал о том факте, что стандартная терминология C ++ включает этот термин. - person ; 17.08.2013
comment
@JohannesSchaub-litb Спасибо, я исправил это, а также добавил дополнительные пояснения. - person ; 17.08.2013
comment
@JohannesSchaub-litb В чем разница между переменной-членом и членом данных? Если class pie { class fruit apple; bool hot; };, то как бы вы назвали apple и как бы вы назвали hot? Спасибо. - person user2672807; 17.08.2013

Я бы не стал этого делать. Хотя это можно понять в общем контексте объектно-ориентированного программирования, в C++ это будет запутанно, поскольку атрибут имеет точное определение в стандарте, которое не совпадает с определением члена данных.

person David Rodríguez - dribeas    schedule 16.08.2013

Атрибуты класса будут транслироваться его членам. Метод — это не то же самое, что функция-член в целом. Но «в объектно-ориентированном программировании метод — это подпрограмма (или процедура), связанная с классом». - Википедия.

person Pierre-Antoine LaFayette    schedule 16.08.2013
comment
Метод всегда связан с классом (хотя в C++ чаще используется термин функция-член). - person Jesse Good; 17.08.2013
comment
@Pierre-AntoineLaFayette: Знаете ли вы выражение (в контексте языков Compsci), где метод означает что-то еще? - person Mooing Duck; 17.08.2013
comment
@MooingDuck Я имел в виду общее математическое/научное определение метода. - person Pierre-Antoine LaFayette; 17.08.2013

Проще говоря, атрибут описывает что-то: «Одним из атрибутов этой машины является то, что она довольно длинная» или «одним из атрибутов гигантской панды является ее поразительный черно-белый цвет».

В XML атрибуты используются для добавления дополнительной информации в тег, например, <species id=3212>Ailuropoda melanoleuca<common_name>Giant Panda</common_name></species> - id — атрибут, Ailuropoda melanoleuca — значение, common_name тег внутри species.

Но я называю переменные в классе "переменными-членами", а функции в классе "функцией-членом" или "методом".

person Mats Petersson    schedule 16.08.2013
comment
true, атрибут, обычно ассоциируется в английском языке с характеристикой или чертой (другое слово с особым значением в C++). - person didierc; 17.08.2013