友元 友元函数 类 成员函数 静态成员函数

创建友元函数的第一步是将其原型放在类声明中,并在原型声明前加上关键字friend

friend Time operator*(double 吗, const Time &t)

· 虽然函数是在类声明中声明的 但他不是成员函数 因此不能使用成员运算符来调用

· 虽然函数不是成员函数 但它与成员函数的访问权限相同

所以 在写友元函数的定义时 不需要加限定符 (Time::)

  • 友元类的几个特性:
  1. 单向性:类A申明类B是它的友元,B能使用A的私有成员;但是A不是B的友元,不能使用B的私有成员。
  2. 友元不能被继承:类A申明类B是它的友元,A的儿子(继承于A)跟B不是友元。
  3. 友元不具有传递性:类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函数。举例如下: 

posted @ 2021-06-23 10:53  旅玖旅玖  阅读(124)  评论(0编辑  收藏  举报