C 訪問控制之private剖析

2021-06-04 19:33:35 字數 515 閱讀 5066

今天在看c++ primer,寫過載操作運算子練習程式的時候,在成員函式中直接操作形參中同型別物件的private成員,程式如下:

operatoroverload& operatoroverload::operator=(const operatoroverload &op)

程式居然可以編譯通過,讓我對private的訪問控制許可權產生懷疑:不是不能訪問物件的private成員嗎?

後來看了這篇文章,作者對c++的訪問控制進行了比較詳細的介紹,看完後對c++的private訪問控制有了新的認識。

原來c++例項化物件的時候只是對資料成員進行例項化,成員函式是所有該類物件共享的,即乙個類只有乙份成員函式,類的成員函式可以訪問該類的任何資料成員,包括private和該類物件的資料成員。如果需要訪問該類多個物件的資料成員,可以在類的public函式中傳入該類物件的引用或者指標,這樣就可以操作同類其他物件的資料成員。

總結:c++的訪問控制符是以類為單位,而不是以物件為單位。

品private成員的訪問控制

首先,我們來回顧下,關於public和private的定義。如下定義,出自c primer中文版p368 public 在public部分定義的成員可被使用該型別的所有 訪問。private 在private部分定義的成員可被其他類成員訪問。好了,大家先回顧自己理解的public private和上...

如何突破類private的訪問控制限制

類的訪問控制許可權如下 訪問public protected private 同乙個類 yesyes yes派生類 yesyes no外部及外部類類 yesno no接下來主要說一下外部函式及外部類幾種突破private訪問許可權的方法。include using namespace std cla...

C 之 訪問控制與訪問控制的繼承

private 本類函式和友元函式可以訪問。protected 本類函式 友元函式和子類函式可以訪問。public 本類函式 友元函式 子類函式和本類的物件可以訪問。和公有繼承 保護繼承和私有繼承沒有關係,保護繼承和私有繼承影響的是子類的繼承關係。類繼承中的訪問控制 公有繼承 public 保護繼承...