可以从同一类型的另一个对象访问私有变量吗?

Tri*_*ant 12 c++ visual-c++ c++11

可能重复:
使用私有修饰符,为什么可以直接访问其他对象中的成员?

C++类的私有成员被设计为对其他类实例不可见.我很困惑,因为可以访问私人成员,如下所示!有谁可以向我解释一下?

这是我的代码:

#include <iostream> 
using namespace std; 
class Person
{
private:
    char* name;
    int age;
public:
    Person(char* nameTemp, int ageTemp)
    {
      name = new char[strlen(nameTemp) + 1];
      strcpy(name, nameTemp);
      age = ageTemp;
    }
    ~Person()
    {
      if(name != NULL)
        delete[] name;
      name = NULL;
    }
    bool Compare(Person& p)
    {
      //p can access the private param: p
      //this is where confused me
      if(this->age < p.age) return false;
        return true;
    }
};
int main() 
{ 
  Person p("Hello, world!", 23);
  return 0; 
}
Run Code Online (Sandbox Code Playgroud)

Phi*_*off 17

类的方法可以在所有类实例中访问其私有属性,至少在C++中是这样.


cmc*_*cmc 5

任何"属于"该类型的代码片段Person都可以访问public,protected并且可以访问private任何Person对象的变量.

这里的类型很重要,而不是实例.