c++中类中私有成员的调用?
天蓬老师
天蓬老师 2017-04-17 13:42:40
0
8
575
#include <iostream>
using namespace std;
class test{
      private:
            int a;
            int b;
      public:
            test(int a = 1, int b = 2){
                  this->a = a;
                  this->b = b;
            }
            int re(test ccc){
                  a = ccc.a + 444;
                  b = ccc.b + 444;
            }
};

为什么re函数中的ccc可以直接调用a和b而不报错?

天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

全部回覆(8)
刘奇

搜尋了下(關鍵字:c++存取類別私有變數),這裡有不錯的解釋:

http://stackoverflow.com/questions/7396846/with-a-private-modifier-why-can-the-member-in-other-objects-be-accessed-directl

好問題。重點是 C++ 中的保護是類別層級的,而不是物件層級的。因此,在一個物件上呼叫的方法可以存取同一類別的任何其他實例的私有成員。

如果您看到保護的作用是允許封裝以確保類別的編寫者可以建立內聚的類,並且不必防止外部程式碼修改物件內容,那麼這是有道理的。

關於真正的「為什麼?」的另一個想法。考慮一下您如何編寫幾乎所有複製構造函數;您想要存取原始的底層資料結構,而不是其呈現的介面。

洪涛

因為 C++ 中一個類別是自己這個類別的友元(friend class)。

小葫芦

因為 a,b 都是 test 類別的成員。

阿神

一個類別的方法可以存取自己的私有成員

迷茫

同一類別的不同物件間可以互相存取私有成員

Ty80

一個類別當然可以

洪涛

私有資料不能直接訪問,只能透過類別的成員函數和友元函數呼叫。

大家讲道理

友元函數 http://learn.jser.com/cplusplus/cpp-friend-functions.html

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板