2016-01-06 48 views
0

接下來的編程經過8年......不編程(很快開始上大學,刷新舊知識)。範圍和封裝有什麼區別? (C++)

範圍和封裝有什麼區別?他們似乎很相似。

+0

範圍是變量或對象所在程序中的區域。封裝確定變量和對象如何組合在一起。 –

+0

我建議在http://programmers.stackexchange.com/ – jerseybyte

+0

@coutocodes中發佈此問題:爲什麼? –

回答

2

範圍是一個程序之內的區域內,其可以被創建並在端自動變量其中它們自動銷燬。例子是函數體或for-loop的代碼塊。

作用域可以包圍彼此和變量在外部範圍可以,或可以不通過代碼訪問在內部範圍

例如,全球範圍包含所有其他範圍和變量在全球範圍內創建是可見所有其他範圍(根據不同的名稱解析規則)。

因此範圍也指對象的能見度,可以從程序中的一個給定的點來訪問。

有不同類型的每個範圍用自己能見度規則,例如類範圍成員變量成員函數成員函數的可見性類對象

如需更詳細的定義見http://en.cppreference.com/w/cpp/language/scope

封裝是當你隱藏,構成了一個對象,並且只專注於對象根據其功能接口行爲的具體數據。在此C++數據隱藏主要由標記數據作爲privateprotected使其從結構內定義它外部訪問來實現的。

+0

** scope **的第二個含義是:與名稱空間和類/結構體/聯合體名稱中的內容分組有關。 (也可以幫助提及隱藏*是用'private'和'protected'完成的)。 –

+0

@TonyD是的,我試圖保持它簡單,但我更多地考慮你的評論越複雜,我意識到這個問題。我知道關於範圍的基本原則,但我不是所有細節方面的專家。 – Galik

+0

同意 - 任何簡潔的概念介紹/概述必須忽略小細節。我真的很喜歡你的第一個剪輯,只是認爲值得指出範圍*外*函數的類型並且與自動變量無關。通過不引入第二個含義,即「還有第二個含義」,或者在前面加上「有一個編譯時名稱空間範圍感和一個運行時流控制範圍感」,你最終意味着所有陳述適用於所有範圍 - 例如第一段暗示自動變量可以放在全局和命名空間範圍內。整蠱! –

1

他們相似。

範圍是關於定義對象的生命週期(鬆散地與「詞法」或代碼方面,它們被聲明的地方的邊界相關),而封裝則是控制誰可以訪問那些對象一生。