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

问题描述:

也许我错过了什么,但我想了解一下以下内容:C++中是否有“属性”关键字?

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

每当你检索或设置 一个没有任何价值的情况下, 你应该使用属性。当您可以使用一个 属性时,请勿使用 两种方法。使用逻辑属性 连接获取和设置一个 的值,并使脚本代码看起来更清洁 。

这个例子有太多的方法:

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。我假设这个语法可以自动创建getter/setter方法。

  • 但是,标准C++在任何方式?
  • 这是一些mozilla特定的东西?
  • 这是在哪里定义的?

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

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

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

是我覆盖整个院落 d ESCRIPTION大号 anguage(用于C++ - 的Javascript互操作)。 Mozilla有一个为此生成C++代码的工具,通常使用getter和setter方法。

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

此编码准则适用于IDL,而不适用于C++,因此不,attribute不属于C++。准则采用的是IDL 生成的C++签名