C++嵌套類與局部類詳細解析
1. 嵌套類
外圍類需要使用嵌套類對象作為底層實現(xiàn),并且該嵌套類只用于外圍類的實現(xiàn),且同時可以對用戶隱藏該底層實現(xiàn)。
從作用域的角度看,嵌套類被隱藏在外圍類之中,該類名只能在外圍類中使用。如果在外圍類之外的作用域使用該類名時,需要加名字限定。
嵌套類中的成員函數(shù)可以在它的類體外定義。
嵌套類的成員函數(shù)對外圍類的私有成員沒有訪問權,反之亦然。
嵌套類僅僅只是語法上的嵌入。
2. 局部類
類也可以定義在函數(shù)體內(nèi),這樣的類被稱為局部類(loacl class)。局部類只在定義它的局部域內(nèi)可見。
局部類的成員函數(shù)必須被定義在類體中。
局部類中不能有靜態(tài)成員函數(shù)。
在實踐中,局部類很少使用。
下面給出一段代碼來說明:
#include<iostream>
using namespace std;
class Outer
{
public:
class Inner
{
public:
void Fun();
};
public:
Inner obj_;
void Fun()
{
cout<<"Outer::Fun...."<<endl;
obj_.Fun();
}
};
void Outer::Inner::Fun()
{
cout<<"Inner::Fun..."<<endl;
}
void Fun()
{
class LocalClass
{
public:
int num_;
void Init(int num)
{
num_=num;
}
void Display()
{
cout<<"num_"<<num_<<endl;
}
};
LocalClass lc;
lc.Init(10);
lc.Display();
}
int main()
{
Outer o;
o.Fun();
Outer::Inner i;
i.Fun();
Fun();
return 0;
}
運行結果:
相關文章
C++中cin.getline()和getline()函數(shù)的區(qū)別小結
這篇文章主要介紹了C++中cin.getline()和getline()函數(shù)區(qū)別的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2021-03-03VisualStudio2019配置OpenCV4.5.0的方法示例
這篇文章主要介紹了VisualStudio2019配置OpenCV4.5.0的方法示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2021-03-03C++之std::vector刪除元素的幾種方式及區(qū)別說明
這篇文章主要介紹了C++之std::vector刪除元素的幾種方式及區(qū)別說明,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-08-08