C private成員的訪問

2021-07-10 04:26:58 字數 816 閱讀 3863

標籤:c++ private class

by 小威威

我們先來看一段**:

# include 

using

namespace

std;

class box

box(int x3, int x4)

box (const

int& box)

box add (box box)

private:

int x2;

};int main(void)

也許你看到這段**並沒有發現什麼矛盾之處,說明你對private成員的概念把握地很準確。我這篇文章是提供給與我一樣陷入誤區的童鞋。

我們知道,private成員是資料隱藏的一種手段,它使得類外結構不能訪問private資料。在main函式中,box.x1是正確的,因為x1是box類中的public成員,類外部的成員可以訪問它。但是,box.x2就不對了,因為x2是box類中的private成員,外部成員不能直接訪問。這時你可能會感到奇怪,在類box的定義中也出現了box.x2,為什麼它就不會出錯呢?

哈哈,這就是對private成員的概念了解的不夠透徹而導致的誤區。我們知道,類的成員可以訪問該類中的所有成員,包括private成員。那麼在類的定義裡,出現box.x2是沒有問題的。因為這個語句出現在類box的定義中,也就是類內成員訪問本類的private成員。但是在main函式中就不一樣了。在main函式裡訪問private,就相當於main函式訪問類box的private成員,main函式是外部成員,卻又訪問類box的私有成員,顯然main的許可權不夠。因此這個語句會編譯出錯。

介面成員的訪問

對於單重繼承介面的訪問,使用者可以使用點運算子 來訪問介面的方法成員,屬性成員和事件成員。對於多重繼承介面的訪問,要使用顯示的型別轉化來解決這種訪問衝突using system using system.collections.generic using system.linq using syst...

python成員訪問

import math class circle def init self self.radius 1 def getattr self,item if item is area print area called return math.pi self.radius 2 elif item is...

資料成員訪問

project100.cpp 此檔案包含 main 函式。程式執行將在此處開始並結束。include pch.h include include include using namespace std class fac class myacls public fac int myacls m si...