为什么我的对象不能访问它自己的私有成员变量? [C ++]

时间:2010-11-24 20:27:34

标签: c++ oop

我有一个名为class Car的类,它已被实例化为对象Car car1。 Car的成员变量之一是Car::width,但是当我尝试执行该行

cout << car1.width << endl;

来自main()我被告知这是不可能的,因为Car::width是私有的。我的理解是私人成员可以被他们所属的类的对象访问,但这种情况让我完全陷入困境。私人成员被他们自己的对象访问的交易是什么?

6 个答案:

答案 0 :(得分:5)

私有成员可以通过它们所属的同一个类的方法访问。

答案 1 :(得分:1)

Car可以访问width。但在您的示例中,谁正在尝试访问width。这正是private的含义。

答案 2 :(得分:1)

如果访问函数(在这种情况下为main)不是您的类friend的成员或Car,那么编译器在说private成员时是正确的width在这种情况下是禁止的。

当您考虑它时,如果任何可以创建Car的人可以访问其private成员,隐私就不会有太大意义。您使构造函数public允许创建对象,但是从这些用户隐藏创建的对象的数据成员以正确封装它们。您将班级private内部的操纵限制为合法使用班级publicprotected成员所允许的内容。

答案 3 :(得分:0)

可以从成员函数中访问它,而不是像你在这里一样在外面访问它。私有变量的全部意义在于完全阻止您尝试执行的操作,即禁止该类用户使用该成员变量。

答案 4 :(得分:0)

Car类上的方法可以访问width成员,但您的代码(cout的代码)不能访问。

答案 5 :(得分:-1)

cout << car1.width

这不是car1试图前往width - cout试图前往widthcout不是car1的成员,因此width是私有的,因此失败。