2016-12-25 32 views
1

__properties的C++ Builder中由值傳遞通過引用或? ...例如。數據通過C++構建器 「__property」

class TMyClass 
{ 
private: 
    int FMyFoo1; 

    int GetMyFoo2(); 
    void SetMyFoo2(int AMyFoo2); 

public: 
    __property int MyFoo1 = {read=FMyFoo1, write=FMyFoo1}; 
    __property int MyFoo2 = {read=GetMyFoo2, write=SetMyFoo2}; 
}; 

此外,您還可以在&經營者添加到__properties,像

__property int &MyFoo = {read=FMyFoo}; 

但只有基於鏘編譯器。這背後的意義是什麼?

+1

你問是否將一個屬性值*傳遞給另一個函數*是通過值或引用傳遞的?如果是這樣,那麼該屬性被視爲*值*。您可以在調試器中查看編譯器生成的代碼來查看。至於'&',它是數據類型的一部分,而不是屬性本身。 '__property int&MyFoo'與'__property int&MyFoo'相同。但是,像這樣聲明一個引用類型的屬性並沒有什麼意義,我從來沒有見過這樣做過。 –

+0

它基於一個快速的想法,這可能會告訴編譯器將屬性數據作爲**引用傳遞給用戶函數**。當Bcc32c沒有抱怨,我感到自己確認我的假設是正確的。 – FlKo

+0

...應該已經* ...參考**其他**功能.... * – FlKo

回答

0

雷米勒博已經回答了我的問題在註釋:

聲明的屬性一樣

__property DataType PropName = {read=FMember, write=FMember}; 

提供即使數據類型未聲明作爲參考來FMember直接訪問。所以,如果你有一個函數,需要一個數據類型&引用作爲輸入,並通過PROPNAME的函數,編譯器仍然可以優化和參考函數傳遞FMember