关于班级的范围和朋友

时间:2014-10-27 05:21:32

标签: c++ class const private friend

#include <iostream>
using namespace std;

class Fam
{
  public:
  Fam(int i)
  {
    num = i;
  }
  void f(Fam &) const;
  private:
  int num;
};

void Fam::f(Fam &dam) const
{
  //dam.num = 5;
  dam.num = 6;
  cout << dam.num;
}
int main()
{
 Fam a(5);
 Fam b(5);
 a.f(b);
}

你们知道为什么我的代码会编译,但是当我在Fam b(5)前写const时,我得到这个错误? test2.cpp:26:7:注意:候选人是: test2.cpp:16:6:注意:void Fam :: f(Fam&amp;)const  void Fam :: f(Fam&amp; dam)const
      ^ test2.cpp:16:6:注意:参数1从'const Fam'到Fam&amp;'

没有已知的转换

如果我使用make一个函数const(在{brace)之前在函数签名中写const,那只能保证我的函数不会修改我正在调用它的对象吗? (换句话说,它不会修改由this指针引用的对象)?

此外,有人可以解释为什么我被允许设置dam.num = 6?不是num私人? ( 我需要 制作一些公共函数来修改对象B的私有num变量?) ****谢谢!我非常感谢时间和精力!****

0 个答案:

没有答案