2011-02-13 65 views
6

也許我錯過了什麼,但我想了解一下以下內容: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特定的東西?
  • 這是在哪裏定義的?

回答

12

Mozilla使用稱爲IDL(接口定義語言)的語言來定義在多語言環境中使用的對象的接口,例如C++和JavaScript。它編譯成這兩種語言的代碼,因此允許開發項目的開發人員以他們想要的語言爲其接口定義一個接口。所以不,這不是標準的C++代碼;這是完全不同的東西。

在相關說明中,interface和readonly也不是C++關鍵字。 :-)

3

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

是我覆蓋整個院落 d ESCRIPTION大號 anguage(用於C++ - 的Javascript互操作)。 Mozilla有一個爲此生成C++代碼的工具,通常使用getter和setter方法。

C++本身沒有attribute關鍵字。

5

此編碼準則適用於IDL,而不適用於C++,因此不,attribute不屬於C++。準則採用的是IDL 生成的C++簽名

相關問題