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