C++学习笔记:
一 友元函数:友元函数没有this指针,不是类的成员,在外部定义无需类标识符,引用全局或者静态对象不需要类对象标识符,而访问非静态对象则需要。
二 类继承:如果不指定继承方式,默认是私有继承。但私有继承和受保护继承基本不用。派生类的可以访问基类中除私有成员外所有成员,所以如果基类的成员如果不想被派生类访问可以放在私有部分‘;
虚继承是为了避免环状继承带来的双份备份:A->D, B->D, C->(A,B),此时C中有2个D;虚继承的方法是在类前加Virtual;
三 函数重载和运算符重载:函数重载是通过参数列表的不同实现,运算符重载形式 :类名 operate 运算符(类名 & 类对象);
四 虚函数、纯虚函数与多态:如果想让基类的某个函数在不同扩展类中有不同的形态,此时就需要将基类的该函数修饰为虚函数,当基类指针指向不同扩张类对象调用该函数时就会有不同的形态。如果基类中又不能对虚函数给出有意义的实现,可以定时成纯虚函数。
五数据抽象是指,只向外界提供关键信息,并隐藏其后台的实现细节,即只表现必要的信息而不呈现细节。数据抽象是一种依赖于接口和实现分离的编程(设计)技术;数据的封装和隐藏OOP是指类的私有成员只能被类的成员函数访问而不能被外部访问。
六C++ 接口(抽象类):接口描述了类的行为和功能,而不需要完成类的特定实现(形式:类中至少有一个函数被声明为纯虚函数,则这个类就是抽象类)
设计策略
面向对象的系统可能会使用一个抽象基类为所有的外部应用程序提供一个适当的、通用的、标准化的接口。然后,派生类通过继承抽象基类,就把所有类似的操作都继承下来。
函数模板和类模板:指的是函数的参数类型不定,但操作相同,定义对象时根据实际参数才确定类型。模板类是指类的数据成员的数据类型不定,根据实际的对象不同能适应各种情况。