【问题标题】:C++ Is it correct to call class member variables "attributes"?C ++调用类成员变量“属性”是否正确?
【发布时间】:2013-08-19 09:24:51
【问题描述】:

有人可以为 C++ 消除类属性和方法的歧义吗?我的印象是属性表示任何成员变量,方法表示任何成员函数。

谢谢

【问题讨论】:

  • 属性 = 有点使用但非正式的术语。
  • 我不会在 C++ 中那样使用术语 attributes,因为名称 attributes 现在指的是语言中 100% 完全不相关的部分。
  • 我不认为这是不正确的,例如“人们可能不会使用这些词”,或者“它们在 C++ 中没有那个含义”。但是,attribute 这个词从 C++11 开始用于something else。只要您对术语的使用足够清楚,并且不会与现有术语保持距离太远,那应该不是问题。

标签: c++ methods attributes terminology


【解决方案1】:

一个类的属性会转化为它的成员。通常,方法与成员函数不同。但是“在面向对象的编程中,方法是与类关联的子例程(或过程)。” - Wikipedia.

【讨论】:

  • 一个方法总是与一个类相关联(尽管在 C++ 中使用成员函数这个词更为常见)。
  • @Pierre-AntoineLaFayette:你知道“speak”(在 compsci 语言的上下文中),其中“method”有其他含义吗?
  • @MooingDuck 我指的是“方法”的通用数学/科学定义。
【解决方案2】:

定义“正确”。

将数据成员和成员函数分别称为“属性/属性”和“方法”是常见的做法 - 这是一般的 OO 措辞。 (不过,“属性”在 C++ 中用于 something else,因此这很可能会造成混淆。)

然而,C++ 标准使用这些术语(当然除了属性,如上所述)。如果您不想冒险并始终保持正确,请使用“数据成员”和“成员函数”。

但如果你只是想向 Java 程序员解释 C++,那么一开始你可能会忽略“属性”和“方法”。

【讨论】:

  • 我称之为不正确。这与方法成员函数的情况不同,因为在C++标准中有一个名为attribute的概念。也就是说,如果你在 C++ 中谈论 method,人们知道 method 在 C++ 中没有任何意义,他们会默认使用 OO 术语。如果您在 C++ 对话中使用 attribute,许多人会认为您在按照标准谈论 attributes
  • @DavidRodríguez-dribeas 所以,基本上,this。 (同样,我并不是说使用通用术语会优于标准中的术语,也许我应该更好地强调这一点。)
  • 类成员不是变量。您可能想用“数据成员”替换“成员变量”。
  • @DavidRodríguez-dribeas 我有一种感觉,无论如何,“属性”并不是最好的词……说实话,我并不知道标准 C++ 术语包括这个词。
  • @JohannesSchaub-litb 谢谢,我解决了这个问题,并添加了进一步的说明。
【解决方案3】:

一般来说,一个属性描述了一些东西,“这辆车的一个属性是它很长”,或者“大熊猫的一个属性是它的黑白颜色很醒目”。

在 XML 中,属性用于在标签中添加额外信息,例如 <species id=3212>Ailuropoda melanoleuca<common_name>Giant Panda</common_name></species> - id 是属性,Ailuropoda melanoleuca 是值,common_namespecies 中的标签。

但我将类中的变量称为“成员变量”,将类中的函数称为“成员函数”或“方法”。

【讨论】:

  • true,“attribute”,在英语中通常与“characteristic”或“trait”(C++ 中具有特定含义的另一个词)相关联。
【解决方案4】:

我不会那样做。虽然它可以在 OO 的一般上下文中理解,但在 C++ 中会令人困惑,因为 attribute 在标准中有一个精确的定义,而不是 data member

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-24
    • 2011-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多