2016-01-06 47 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

他们相似。

范围是关于定义对象的生命周期(松散地与“词法”或代码方面,它们被声明的地方的边界相关),而封装则是控制谁可以访问那些对象一生。