我只是想确保我了解公共权利和私人权利。
关于私有访问说明符,这是否意味着:
- 只能在类内部访问
- 不能从类的对象访问,除非有可以用来访问它们的公共类方法(其他对象可以使用那些公共函数吗?)
- 没有其他对象可以访问它们
对于公众:
- 从类的对象访问
- 从任何其他对象访问
是对的吗?
我只是想确保我了解公共权利和私人权利。
关于私有访问说明符,这是否意味着:
对于公众:
是对的吗?
private:只有成员函数和类的朋友可以访问它。
public :可以在对象具有范围的任何地方访问。
回答问题——
私人:
公开:
私有成员只能被同一个类的成员函数和静态函数以及类的朋友访问。在哪个对象上调用该函数并不重要。所以这个案子
class Foo
{
private:
void bar() {}
public:
void baz(Foo& var)
{
var.bar();
}
}
是完全合法的。
我认为首先是词汇问题。
在 C++(和大多数语言)中,aclass
是type
. 您可以将其视为实际构建某些东西的蓝图。
Anobject
是通过实际实例化一个类产生的,即构建蓝图所描述的内容。它或多或少是一组属性。您可以拥有多个相同类别的对象,因为您可以拥有来自同一蓝图的多个房屋:请注意,由于显而易见的原因,它们的物理位置不同:)
现在,关于可访问性。有 3 个典型的可访问性级别public
:protected
和private
。
public
,正如预期的那样,意味着每个人都可以访问属性或方法protected
有点不那么琐碎。这意味着只有对象或其子对象可以访问属性(坏主意*)或方法。(另外,在 C++ 中,friend
s)private
意味着只有该类的对象(而不是它们的子类)可以访问属性或方法(另外,在 C++ 中,friend
s)注意:无论可访问性级别如何,对象都可以不受限制地访问同一类的任何对象的所有属性和方法。
(*) 即使它时不时地弹出,使用protected
属性通常是个坏主意。封装的重点是隐藏细节,不仅是为了它,而是因为通过精确控制谁可以访问数据,我们可以确保类保持其不变量(简单示例,一个存储大小的数组另外,您需要确保“大小”始终真正代表数组中的项目数)。注意:当您可以密封层次结构时,此限制不适用,例如在 C# 中。
这似乎是正确的。任何人都可以从任何地方访问标记为公开的数据成员和函数。标记为私有的数据成员和函数只能由类及其朋友访问。但是,类的成员函数可以使用任何访问说明符访问数据,因此公共函数可以读取和写入私有数据成员(这在 OOP 中普遍使用)。
在 c++ 中,数据和 fn 被封装为 1 个单元。我们通过编写预处理器指令开始一个程序然后,类声明,然后是函数(fn)声明,我们还指定访问修饰符(公共、私有或受保护)
& 最后是 main () 程序。
如果我们声明一个私有 fn:类的对象中的数据只能由其中定义的 fn 访问-(具有数据和私有 fn 的对象)
Public:任何fn都可以访问数据
受保护:类似于私有,但是数据也可以被继承另一个类的属性的子类访问。
例如,如果类 A 继承自类 B,则 A 是 B 的子类。