我有一个名为class Car
的类,它已被实例化为对象Car car1
。 Car的成员变量之一是Car::width
,但是当我尝试执行该行
cout << car1.width << endl;
来自main()
我被告知这是不可能的,因为Car::width
是私有的。我的理解是私人成员可以被他们所属的类的对象访问,但这种情况让我完全陷入困境。私人成员被他们自己的对象访问的交易是什么?
答案 0 :(得分:5)
私有成员可以通过它们所属的同一个类的方法访问。
答案 1 :(得分:1)
Car
可以访问width
。但在您的示例中,您谁正在尝试访问width
。这正是private
的含义。
答案 2 :(得分:1)
如果访问函数(在这种情况下为main
)不是您的类friend
的成员或Car
,那么编译器在说private
成员时是正确的width
在这种情况下是禁止的。
当您考虑它时,如果任何可以创建Car
的人可以访问其private
成员,隐私就不会有太大意义。您使构造函数public
允许创建对象,但是从这些用户隐藏创建的对象的数据成员以正确封装它们。您将班级private
内部的操纵限制为合法使用班级public
或protected
成员所允许的内容。
答案 3 :(得分:0)
可以从成员函数中访问它,而不是像你在这里一样在外面访问它。私有变量的全部意义在于完全阻止您尝试执行的操作,即禁止该类用户使用该成员变量。
答案 4 :(得分:0)
Car类上的方法可以访问width
成员,但您的代码(cout
的代码)不能访问。
答案 5 :(得分:-1)
cout << car1.width
这不是car1
试图前往width
- cout
试图前往width
。 cout
不是car1
的成员,因此width
是私有的,因此失败。