2012-03-09 26 views

回答

14

一種存取是用於類方法讀數據成員,而增變是用於變化數據成員的一類方法。

下面是一個例子:

class MyBar; 

class Foo 
{ 
    public: 
     MyBar GetMyBar() const { return mMyBar; } // accessor 
     void SetMyBar(MyBar aMyBar) { mMyBar = aMyBar; } // mutator 

    private: 
     MyBar mMyBar; 
} 

它使數據成員private(如上面的例子),並只能通過存取函數訪問這些最佳實踐。這是由於以下原因:

  • 你知道它們何時被訪問(並且可以通過斷點進行調試)。
  • 增變器可以驗證輸入以確保它符合某些約束條件。
  • 如果您需要更改內部實現,您可以在不破壞大量外部代碼的情況下執行此操作,而只需修改訪問器/增變器引用內部數據的方式。
3
class foo 
{ 
    private: 

     int a; 
    public: 
     int accessA() const { return(a);} 
     void mutateA(const int A) { a = A;} 
} 

也被稱爲getters和setter,可能還有其他一些術語。

+2

您的訪問者應該是const! :) – 2012-03-09 00:30:40

+2

@韋斯利彼得羅夫斯基 - 公平不夠,但不應該每個人都太? – Duck 2012-03-09 00:56:59

+0

先生,這是一個很好的例子。當然他們應該;) – chris 2012-03-09 01:14:03

相關問題