C++嵌套類與局部類詳細(xì)解析
1. 嵌套類
外圍類需要使用嵌套類對(duì)象作為底層實(shí)現(xiàn),并且該嵌套類只用于外圍類的實(shí)現(xiàn),且同時(shí)可以對(duì)用戶隱藏該底層實(shí)現(xiàn)。
從作用域的角度看,嵌套類被隱藏在外圍類之中,該類名只能在外圍類中使用。如果在外圍類之外的作用域使用該類名時(shí),需要加名字限定。
嵌套類中的成員函數(shù)可以在它的類體外定義。
嵌套類的成員函數(shù)對(duì)外圍類的私有成員沒有訪問權(quán),反之亦然。
嵌套類僅僅只是語(yǔ)法上的嵌入。
2. 局部類
類也可以定義在函數(shù)體內(nèi),這樣的類被稱為局部類(loacl class)。局部類只在定義它的局部域內(nèi)可見。
局部類的成員函數(shù)必須被定義在類體中。
局部類中不能有靜態(tài)成員函數(shù)。
在實(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;
}
運(yùn)行結(jié)果:

相關(guān)文章
使用C++實(shí)現(xiàn)插件模式時(shí)的避坑要點(diǎn)(推薦)
這篇文章主要介紹了使用C++實(shí)現(xiàn)插件模式時(shí)的避坑要點(diǎn),本文主要分析實(shí)踐中常見的、因?yàn)閷?duì)原理不清楚而搞出來的產(chǎn)品里的坑,本文給大家介紹的非常詳細(xì),需要的朋友可以參考下2022-08-08
C++程序自動(dòng)重啟的實(shí)現(xiàn)代碼
自動(dòng)重啟原理很簡(jiǎn)單,用一個(gè)進(jìn)程監(jiān)控另一個(gè)進(jìn)程,掛了就再啟動(dòng)一個(gè),細(xì)節(jié)也不算多,主要是正確判斷進(jìn)程狀態(tài)和啟動(dòng)方式,本文就給大家講講C++程序自動(dòng)重啟的實(shí)現(xiàn)方法,文中有詳細(xì)的代碼示例供大家參考,需要的朋友可以參考下2024-04-04
實(shí)例講解C語(yǔ)言編程中的結(jié)構(gòu)體對(duì)齊
這篇文章主要介紹了C語(yǔ)言編程中的結(jié)構(gòu)體對(duì)齊,值得注意的是一些結(jié)構(gòu)體對(duì)齊的例子在不同編譯器下結(jié)果可能會(huì)不同,需要的朋友可以參考下2016-04-04
C語(yǔ)言 結(jié)構(gòu)體數(shù)組詳解及示例代碼
本文主要介紹C語(yǔ)言 結(jié)構(gòu)體數(shù)組,這里整理了相關(guān)資料及簡(jiǎn)單示例代碼,以便大家學(xué)習(xí)參考,有興趣的小伙伴可以看下2016-08-08
C++實(shí)例分析講解臨時(shí)對(duì)象與右值引用的用法
對(duì)性能來說,許多的問題都需要和出現(xiàn)頻率及本身執(zhí)行一次的開銷掛鉤,有些問題雖然看似比較開銷較大,但是很少會(huì)執(zhí)行到,那也不會(huì)對(duì)程序有大的影響;同樣一個(gè)很小開銷的函數(shù)執(zhí)行很頻繁,同樣會(huì)對(duì)程序的執(zhí)行效率有很大影響。本章中作者主要根據(jù)臨時(shí)對(duì)象來闡述這樣一個(gè)觀點(diǎn)2022-08-08

