友元函数
- 关键字friend。
- 友元函数不是类的成员函数。
- 在类的内部声明。
- 在友元函数内部可以直接访问类的私有成员 。
- 友元函数中没有this指针。
p.s.this指针始终指向调用成员函数的对象,是一个常量。
在类的外面给出友元函数的函数体:
- 没有friend。
- 不能加类名。
- 一个类的成员函数可以是另一个类的友元函数。
声明类:可以定义指针和引用,不能定义对象。
class B;
友元类:类B是类A的友元类。类B的所有成员函数都是类A的友元函数。【声明了一批友元函数
- 可以使用友元类使派生类可以访问基类的私有成员。
虚函数
多态性
基类指针指向派生类。调用的函数是指向的派生类的成员函数。否则一直调用基类的成员函数。
参数和返回值不一样时可以定义虚函数。
构造函数不可以定义为虚函数。析构函数可以定义为虚函数。
只对指针有用。
只有公有继承,基类指针才能指向派生类对象。
纯虚函数可以没有函数体。
virtual void print()=0;
抽象类:定义了纯虚函数的类。不能用来定义对象。
派生类中没有给出基类纯虚函数的函数体,派生类也是抽象类。
静态数据成员
任意一个类的静态成员必须在类外初始化,必须初始化。有且只有一份。
int A::x; = int A::x=0;
静态成员不属于对象。
静态成员函数:
- 不能通过对象调用
- 没有this指针
- 非静态成员用对象调用
- 类外定义不加static
运算符重载