朋友一个类型?

时间:2011-08-20 02:13:16

标签: c++

我不知道在互联网上搜索此类朋友的正确密钥,仅仅一个关键字朋友不会带来这个预期的结果。

class Integer
{
   friend int;
};

朋友int是什么意思?

2 个答案:

答案 0 :(得分:4)

它是无效的C ++,它应该被编译器拒绝。 g ++给出了两个错误“错误:声明朋友时必须使用类密钥”和“错误:无效类型'int'声明'朋友'”。

只有正在“朋友”编辑的东西是函数或类名才有意义。在这种情况下,命名函数或命名类的所有成员函数都可以访问类的私有成员和受保护成员,就像它们是公共的一样。

例如:

class MyClass
{
public:
  int x;
protected:
  int y;
private:
  int z;

  friend void SomeFunction(const MyClass& a);  // Friend function
  friend class OtherClass;  // Friend class
};

void SomeFunction(const MyClass& a)
{
  std::cout << a.x << a.y << a.z;  // all ok
}

void AnotherFunction(const MyClass& a)
{
  std::cout << a.x << a.y << a.z;  // ERROR: 'y' and 'z' are not accessible
}

class OtherClass
{
  void ClassMethod(const MyClass& a)
  {
    std::cout << a.x << a.y << a.z;  // all ok
  }
};

class ThirdClass
{
  void ClassMethod(const MyClass& a)
  {
    std::cout << a.x << a.y << a.z;  // ERROR: 'y' and 'z' not accessible
  }
};

答案 1 :(得分:0)

friend int没有任何意义。如果您搜索“C ++ friend class”,您将找到有关朋友可以使用的信息。基本上它允许朋友访问该类的私有(或受保护)成员。在示例中,您给出了它没有意义,因为int不是一个试图访问另一个类的内部的类。