『壹』 友元函數能不能訪問類中的私有數據成員
1、 友元函數是可以直接訪問類的私有成員的非成員函數。它是定義在類外的普通函數,它不屬於任何類,但需要在類的定義中加以聲明,聲明時只需在友元的名稱前加上關鍵字friend。
2、 友元函數可以訪問類的靜態成員、私有成員和公有成員。
3、友元的作用在於提高程序的運行效率(即減少了類型檢查和安全性檢查等都需要的時間開銷),但是,它破壞了類的封裝性和隱藏性,使得非成員函數可以訪問類的私有成員。
『貳』 c++類外的函數能夠調用類裡面的數據成員嗎
可以通過引用對象名訪問該類的公有數據成員、引用對象名訪問該類的公有函數成員作為介面間接訪問該類的私有和公有數據成員、將此外部函數聲明為該類的友元等方法。
『叄』 Java:關於外部類訪問內部類成員的問題
\\外部類對象可以直接訪問內部類對象的成員變數和方法
你使用的這個方法的旨意是用非靜態的外部類實例化一個內部類對象,外部類能夠訪問成員內部類的成員變數和方法的唯一途徑就是通過實例化一個外部類的對象,然後這個對象通過 對象.makeInner()來new一個Inner in,此過程調用了Inner()這個內部類的構造函數。
其實你只是把順序搞錯了,編譯時不回去運行你的函數方法,也就是代碼中:
public void makeInner(){
Inner in = new Inner();
in.seeOuter();
}
這個越權的函數並未去執行訪問其所在類的內部類的成員函數:Inner();
且Outer並不是static,所以其只能實例化一個對象,然後對象.makeInner();這時處於運行時,此類的對象可以調用此類的內部類的成員方法和成員變數,自然可以調用Inner();
說的簡單點:你使用makeInner()時一定是實例化一個Outer的對象了,不然你無法調用makeInner,對吧,運行makeInner時他一定是在Outer這個類的對象下運行的,Outer的對象是可以訪問其內部類Inner的變數和方法的。所以說:makeInner()運行時你絕對已經創建了一個Outer的對象了。是這個對象的makeInner()在運行,而這個Outer的這個對象是可以訪問Outer的內部類Inner的變數和方法的。編譯並非運行,編譯時Outer沒有實例化對象,但makeInner()也沒被調用運行,所以他編譯時沒有去訪問內部類Inner的東東,等你運行時自然你已經實例化一個對象了,自然也就可以訪問了~~~
『肆』 VS2005 MFC 對話框 類外的普通函數 怎麼調用類內的成員
在你的CMFC_VideoDlg類外定義一個全局變數
CMFC_VideoDlg *g_pDlg = NULL;
然後在OnInitDialog函數中加上這段代碼: g_pDlg = this;
然後在你的Thread1videoFunc函數中這樣使用
g_pDlg->m_ShowVideo = cvQueryFrame(capture);
g_pDlg->DrawPicToHDC(g_pDlg->m_ShowVideo, IDC_Pictrue_Video);
『伍』 如何在主函數中調用類中的成員函數調用
主函數中調用類中的成員函數調用方式為:對象名.成員函數名(參數列表)。
其中「.」是成員運算符,用來對成員進行限定,指明所訪問的是哪一個對象中的成員。不僅可以在類外引用對象的公用數據成員,而且還可以調用對象的公用成員函數,但同樣必須指出對象名,如:
stud1.display( );//正確,調用對象stud1的公用成員函數。
display( );//錯誤,沒有指明是哪一個對象的display函數。
由於沒有指明對象名,編譯時把display作為普通函數處理。應該注意所訪問的成員是公用的(public )還是私有的(private )。只能訪問public成員,而不能訪問private成員。
(5)類外函數訪問類中成員擴展閱讀:
類的成員函數與一般函數的區別:
1、類的成員函數是屬於一個類的成員,出現在類體中。類的成員函數可以被指定為private(私有的)、public (公用的)或protected(受保護的)。在使用類函數時,要注意調用它的許可權(它能否被調用)以及它的作用域(函數能使用什麼范圍中的數據和函數)。
2、私有的成員函數只能被本類中的其它成員函數所調用,而不能被類外調用。
3、成員函數可以訪問本類中任何成員(包括私有的和公用的),可以引用在本作用域中有效的數據。
4、一般的做法是將需要被外界調用的成員函數指定為public,它們是類的對外介面,並非要求把所有成員函數都指定為public。有的函數並不是准備為外界調用的,而是為本類中的成員函數所調用的,就應該將它們指定為private。
5、類的成員函數的作用是支持其它函數的操作,是類中其它成員的工具函數(utility function),類外用戶不能調用這些私有的工具函數。
6、類的成員函數是類體中十分重要的部分。如果一個類中不包含成員函數,就等同於C語言中的結構體了,體現不出類在面向對象程序設計中的作用。
『陸』 如何在一個類中訪問另一個類的成員函數
假設你想在類A里調用類B的函數int f(x),兩種辦法:
1、class A::B 也就是說將B定義為A的父類, 這樣你就可以自然的在A裡面用f(x)了
2、class A
{
B B_ins;
int g(x);
}
int g(x)
{
return B_ins.f(x)
}
也就是說你可以在A裡面使用一個B的對象作為成員變數,這樣就可以用他的函數了