1、常量数据成员的初始化只能通过构造函数的成员初始化列表进行,并且要用关键字const修饰

#include using namespace std;class MyClass {int _i;friend void Increment(MyClass& f);public:const int NUM;// ERROR********found********MyClass(int i = 0):NUM{0}{_i = i;}int GetValue() const { return _i; }};

2.友元函数的定义要与函数的声明相呼应,即返回值、参数类型、参数个数要一致。友元函数的调用不需要使用类名和作用域

void Increment(MyClass& f) { f._i++; }

3.友元函数的调用不需要类名和作用域

Increment(obj);