C ++中是否有“attribute”关键字?

时间:2011-02-13 11:47:47

标签: c++ attributes

也许我错过了什么,但我想知道以下内容:

Mozilla Developer Pages about Coding Guidelines,我读了以下内容:

  

每当您检索或设置时   没有任何上下文的单个值,   你应该使用属性。不要用   你可以使用一种方法   属性。逻辑上使用属性   连接a的获取和设置   值,并使脚本代码看起来   清洁剂。

     

此示例包含太多方法:

 interface nsIFoo : nsISupports {
     long getLength();
     void setLength(in long length);
     long getColor(); 
 };
     

以下代码将生成完全相同的代码   相同的C ++签名,但更多   脚本友好。

interface nsIFoo : nsISupports {
    attribute long length;
    readonly attribute long color; 
};

我在想的是attribute long length。我假设这个语法通过aucomatically创建getter / setter方法。

  • 但这是标准的C ++吗?
  • 这是一些特定的mozilla吗?
  • 这是在哪里定义的?

3 个答案:

答案 0 :(得分:12)

Mozilla使用一种名为IDL(接口定义语言)的语言来定义多语言上下文中使用的对象的接口,例如C ++和JavaScript。它汇编成这两种语言的代码,因此允许在项目上工作的开发人员可以在他们想要的语言中为他们的接口定义单一的定义。所以不,这不是标准的C ++代码;这是完全不同的东西。

在相关的说明中,interface和readonly也不是C ++关键字。 : - )

答案 1 :(得分:5)

此编码指南适用于IDL,而不适用于C ++,所以不,attribute不是C ++的一部分。准则涉及IDL 生成的C ++签名

答案 2 :(得分:3)

interface nsIFoo : nsISupports {
    attribute long length;
    readonly attribute long color; 
};

nterface D escription L anguage (用于C ++ - Javascript互操作)。 Mozilla有一个工具,可以使用通常的getter和setter方法为此生成C ++代码。

C ++本身没有attribute个关键字。