以上三种关键字的限定,归根到底,都是this指针在幕后操作。
const访问权限限定
-
const对象可以调用非const成员函数吗?
-
非const对象可以调用const成员函数吗?
-
const成员函数内可以调用其它的非const成员函数吗?
-
非const成员函数内可以调用其它的const成员函数吗?
static访问权限限定
- 静态成员为所有类对象所共享,不属于某个具体的实例
- 静态成员变量必须在类外定义,定义时不添加static关键字
- 类静态成员即可用类名::静态成员或者对象.静态成员来访问
- 静态成员函数没有隐藏的this指针,不能访问任何非静态成员
- 静态成员和类的普通成员一样,也有public、protected、private3种访问级别,也可以具有返回值
6、非静态成员函数是属于某个具体的实例的,需要this指针来驱动的
- 静态成员函数可以调用非静态成员函数吗?
- 非静态成员函数可以调用类的静态成员函数吗
可以,原理同上:因为静态成员函数属于整个类。
friend访问权限限定
1、友元函数可访问类的私有和保护成员,但不是类的成员函数
2、友元函数不能用const修饰(因为友元没有this指针)
3、友元函数可以在类定义的任何地方声明,不受类访问限定符限制一个函数可以是多个类的友元函数(但是友元关系是单向的不具有交换性;友元关系不能传递)
4、友元函数的调用与普通函数的调用和原理相同