小知识点
6.运算符重载
7.友元
友元函数不是类的成员,但是可以访问类的私有成员。除了友元函数还有友元类。友元的作用是提高了程序的运行效率(即减少了类型检查和安全性检查等需要的时间开销),但是它破坏了类的封装性和隐藏性,使得非成员函数可以访问类的私有成员。
- 友元函数
友元函数定义在类外,不属于任何类,但是需要在类的定义中声明,声明时只需要在友元的名称前加关键字friend。声明放在类的私有部分和公有部分没有区别,都说明是该类的一个友元函数。一个函数可以是多个类的友元函数,只需要在各个类中分别声明。
- 友元类
友元类的所有成员函数都是另一个类的友元函数。定义格式如下:
friend class 已定义的类名 友元类名;
注意:
(1)友元关系不具有传递性。若类B是类A的友元,类A是类C的友元,这和类B和类C关系无关。
(2)友元关系不能被继承。
8.优先队列(priority_queue)
优先队列不再遵循队列先入先出的原则, 而是分为两种情况:
- 最大优先队列,无论入队顺序如何,当前最大的元素优先出队。即大顶堆。
priority_queue<int, vector<int>, less<int>> maxHeap;
- 最小优先队列,无论入队顺序如何,当前最小的元素优先出队。即小顶堆。
priority_queue<int, vector<int>, greater<int>> minHeap;