#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变量?) ****谢谢!我非常感谢时间和精力!****