友元 友元函数 类 成员函数 静态成员函数
创建友元函数的第一步是将其原型放在类声明中,并在原型声明前加上关键字friend
friend Time operator*(double 吗, const Time &t)
· 虽然函数是在类声明中声明的 但他不是成员函数 因此不能使用成员运算符来调用
· 虽然函数不是成员函数 但它与成员函数的访问权限相同
所以 在写友元函数的定义时 不需要加限定符 (Time::)
- 友元类的几个特性:
- 单向性:类A申明类B是它的友元,B能使用A的私有成员;但是A不是B的友元,不能使用B的私有成员。
- 友元不能被继承:类A申明类B是它的友元,A的儿子(继承于A)跟B不是友元。
- 友元不具有传递性:类A是B的友元,类B是C的友元,但是C不一定是A的友元。
二.静态成员函数:
1.静态成员函数的地址可用普通函数指针储存,而普通成员函数地址需要用 类成员函数指针来储存。举例如下:
class base{
static int func1();
int func2();
};
int (*pf1)()=&base::func1;//普通的函数指针
int (base::*pf2)()=&base::func2;//成员函数指针
2.静态成员函数不可以调用类的非静态成员。因为静态成员函数不含this指针。
3.静态成员函数不可以同时声明为 virtual、const、volatile函数。举例如下:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步