简介

本课程将带领大家体会更为奇妙的C++,讲述了静态、友元、运算符重载的定义及使用方法,其中重点讲述函数模板、类模板以及标准模板库的相关知识,知识内容更重实用性,本门课程对于面向对象的语言的学习将大有裨益,所有知识均以实践的方式讲解到操作层面,力求即学即会。

第2章 友元函数和友元类

2-1 [C++]友元函数(07:44)

  1. 传入当前类的对象或引用或指针,其中传入引用或指针的速度更快,所以提倡形参选择使用引用或者指针,如: void printXY(Coordinate &c)
  2. 因为传入的对象是引用,所以调用函数时只需传入对象名即可。如:Coordinate coor(3,5); printXY(coor);
  3. 将一个函数声明为一个类的友元函数后,它可以通过对象名访问类的公有、私有、保护成员。如:friend void Circle::printXY(Coordinate &c);后可用Circle circle; circle.printXY(coor);

一个类的成员函数成为另一个类的友元函数,从而可访问另一个类的保护或私有成员,虽然更加方便的访问数据,但是风险是也破坏了数据封装性。对数据的直接访问方便了,但是更改数据不易察觉。
1,友元全局函数:
friend void printXY(Coordinate &c);
将函数printXY声明成类coordinate的友元,则在printXY可以直接访问coordinate的private的成员。
友元成员函数:
friend void Circle::printXY(Coordinate &c);
将类Circle的成员函数printXY声明称Coordinate类的友元,
2,友元类:
在类Coordinate 中写上
friend Circle;//应该在类外,前面先写上class Circle;
则可以在Circle类中声明一个Coordinate的对象,然后可以调用Coordinate类的任何成员。
3,友元注意事项
单向性,不可传递性,声明的形式及数量不受限制。

2-2 [C++]友元函数编码实现…(08:56)

1)必须在类的说明中说明友元函数,说明时以关键字friend开头,后跟友元函数的函数原型,友元函数的说明可以出现在类的任何地方,包括在private和public部分;
2)注意友元函数不是类的成员函数,所以友元函数的实现和普通函数一样,在实现时不用”::”指示属于哪个类,只有成员函数才使用”::”作用域符号;
3)友元函数不能直接访问类的成员,只能访问对象成员,
4)友元函数可以访问对象的私有成员,但普通函数不行;
5)调用友元函数时,在实际参数中需要指出要访问的对象,
6)类与类之间的友元关系不能继承。
7)一个类的成员函数也可以作为另一个类的友元,但必须先定义这个类。

也要声明友元成员函数所在的类#include”Match.h”。
friend与public、private、protect并不构成约束关系,即可以写在类的最上面,也可以写在public、private、protect的下面,最好写在最前面。

第3章 static

3-1 [C++]静态(10:08)

  • 静态成员是类的成员,不是对象的成员;

    • 静态成员函数不能直接访问非静态函数,普通成员函数可以调用静态函数。
    • 静态成员函数访问静态数据成员的方法:类名::静态成员名 || 对象名.静态成员名 || 对象指针->静态成员名
    • 静态成员函数没有this指针
    • 静态数据成员只有一份
    • 静态成员函数不允许修饰符const

    1。静态变量是不依赖对象的实例化的,即使对象不实例化,静态变量也是实际存在于内存当中的,而普通的变量随对象的生成而诞生,随对象的销毁而销毁。
    2.静态成员的初始化:(应为静态成员变量随类的诞生而诞生,所以在声明类之后(即在类实例化之前)就应该初始化静态成员变量,所以静态成员的初始化一般不写在类构造函数中,而是应该在类外单独初始化)

在非静态成员函数中可以调用静态成员也可以调用非静态成员;但是静态成员中只能调用静态成员,因为静态成员函数不会有隐式的this指针的传入,所以没法确定调用哪个对象的成员。静态成员声明时加static关键字,定义时不加。静态成员函数不能被定义成常成员函数,因为常成员函数中的const是修饰this指针的。

第4章 运算符重载

4-1 [C++]一元运算符重载…(10:07)

4-2 [C++]一元运算符编码实现…(11:25)
4-3 [C++]一元运算符编码实现…(09:01)
4-4 [C++]二元运算符重载…(12:39)
4-5 [C++]二次运算符重载编码…(12:03)
4-6 练习题
4-7 综合练习
第5章 模板函数与模板类
5-1 [C++]函数模板(11:25)
5-2 [C++]函数模板编码实现…(06:38)
5-3 练习题
5-4 单元巩固
5-5 [C++]类模板(04:59)
5-6 [C++]类模板编码实现…(05:52)
5-7 练习题
5-8 单元巩固
第6章 标准模板类
6-1 [C++]标准模板库(16:42)
6-2 [C++]标准模板库编码实现…(08:19)
6-3 [C++]标准模板库编码实现…(12:21)
6-4 练习题
6-5 单元巩固