网站开发有前途么,c2c模式在我国开始于1999年的,wordpress 409错误,安徽鹏华建设工程有限公司网站OPP面向对象程序设计
数据抽象#xff1a;类的接口声明和定义实现分离继承#xff1a;类构成的#xff08;树型#xff09;层次关系动态绑定#xff1a;忽略相似类型区别#xff0c;用统一的方式使用
基类派生类#xff1a;
继承#xff1a;类名 冒号 访问说明符 …OPP面向对象程序设计
数据抽象类的接口声明和定义实现分离继承类构成的树型层次关系动态绑定忽略相似类型区别用统一的方式使用
基类派生类
继承类名 冒号 访问说明符 基类列表多重继承基类可以有普通的成员派生类直接继承不要改变的和虚函数想要选择性重新的对于继承的层次一个底层派生类将继承直接基类的所有成员而直接基类有会继承它的直接基类的所有成员因此一个底层派生类会包含它的直接基类以及每个间接基类对象如果想要防止继承发生可以在类定义的类名后加上final关键字如果继承了这个类将发生错误
虚函数
在基类中用virtual在函数声明前表示派生类可以选择性重写函数当没有重写时虚函数类似普通成员函数由派生类继承其中派生类重写覆盖的这个函数也都隐式的为虚函数其中virtual仅能出现在类的构造函数外的非静态成员函数上//重写时可以非必要的写virtual关键字最好写overried关键字因为它可以提醒我们是否正确的覆盖当函数没有覆盖基类的函数形参列表返回类型不一致或基类没有函数都将报错派生类结构基类部分派生类新增的自定义部分//如果基类定义了static函数整个继承层级都只包含一个static实例并遵守访问说明符的访问权限虚函数可以有默认实参派生类仅声明不定义不包含派生列表一个类若想作为基类必须定义而非仅声明//派生类可以转换为基类我们无法做到对象的转换仅可以转换为基类指针或引用并且基类不可以转换为派生类否则将包含派生类中特有基类没有的部分当派生类转换为基类时实际会调用 拷贝构造或赋值运算符这时的调用其实都是调用基类定义的版本//构造函数每个类都仅能初始化自己的成员也就是说派生类没法直接初始化基类的成员都将执行默认初始化但可以通过构造函数的初始化列表调用基类的构造函数从而初始化基类成员动态绑定使用基类指针或引用调用虚函数成员可能执行基类或派生类的版本解析发生在运行时否则普通继承的函数发生在编译时如果不希望动态绑定希望调用特定的版本可以用作用域运算符实现
静态类型 VS 动态类型
静态编译可知基类类型 或 派生类类型 编译时可以确定绑定的是哪一个动态运行可知基类指针或引用编译时无法确定绑定的是哪一个
抽象基类
将虚函数最后面 0表示声明纯虚函数一个纯虚函数无需定义虽然可以在类外定义这样的类为抽象基类我们无法直接创建类实例表明纯虚函数是一个接口仅声明没有定义抽象类可以定义它用派生类重写抽象类否则派生类也是一个抽象类无法实例化
访问控制
基类中访问说明符控制派生类的成员或友元对基类成员访问权限 protected受保护的成员不可以由类实例访问仅可由成员及派生类和派生类的友元访问并且仅能通过派生类和派生类的友元访问直接访问不可以间接从基类访问派生类访问说明符控制派生类对象和派生类的派生类对基类成员访问权限 public公有继承:不改变对基类的访问权限private私有继承:将public和protected成员的访问权限设置为privateprotected保护继承:将public和protected成员的访问权限设置为protected对于G继承D继承B 只有当D公有地继承B时用户代码才能使用派生类向基类的转换如果D继承B的方式是受保护的或者私有的则用户代码不能使用该转换无论D以什么方式继承BD的成员函数和友元都能使用派生类向基类的转换派生类向其直接基类的类型转换对于派生类的成员和友元来说永远是可访问的如果D继承B的方式是公有的或者受保护的则G的成员和友元可以使用D向B的类型转换反之如果D继承B的方式是私有的则不能使用理解 private和protected继承会改变派生类对象的访问权限private和protected继承不会改变派生类的成员或友元的访问权限private和protected继承会改变派生类的派生类的访问权限且如果为protected派生类仍可访问友元不具有传递性同样的继承也不可以传递可以通过using控制成员的访问权限对于class默认派生类访问说明符为private对于struct默认派生类访问说明符为public