C++之类

来源:互联网 发布:灌篮高手java 编辑:程序博客网 时间:2024/06/05 01:09

    经过C++等级考试,对C++有所了解,故有以下总结,主要讲述的是思维导图中的几点:

类和对象

     

    特殊类:由于特殊需求而C++产生的类

1、友元类

    一个房子,客厅比喻公用部分,用卧室比喻私有部分。客厅对所有来客开放,而卧室除了本家庭的成员可以进入以外,还允许好朋友进入。好朋友就是友元。

    友元可以访问与其有好友关系的类中的私有成员。

    B类是A类的友元类,友元类B中的所有函数都是A类的友元函数,可以访问A类中的所有成员。

    注意:
           a、友元的关系是单向的而不是双向的
                 如果声明了B类是A类的友元类,不等于A类是B类的友元类。
           b、友元的关系不能 传递
                 如果B类是A类的友元类,C类是B类的友元类,不等于 C类是A类的友元类。
           c、友元关系不能被继承。

    友元函数

           a、将函数(成员函数和非成员函数)声明为友元函数

           b、一个函数可以被多个类声明为“朋友”,这样就可以引用多个类的私有成员。

2、虚基类
                  
    多继承引起派生类的多次继承——解决办法:定义为虚基类
    类D继承了类A两次,分别通过类B和类C。把类A声明成虚基类,类D就继承了类A一次。
3、抽象类
     又叫抽象基类(不是鸡肋):他在定义的时候使用 abstract 关键字标记的一般类.他可包含一般类所包含的所有特性,例如,字段,属性,方法,另外他还包含一个很特殊的方法,叫抽象方法(这些方法基本上是没有执行代码的函数标题,而派生于该类的的类就必须提供执行的代码).最可气的是,他不能被实例化,他主要的用在类的定义和部分实现这方面,所以他需要在扩充类中完整的扩充并实现功能。
    特征
        a、抽象类不能被实例化。
        b、抽象类可以包含抽象方法和访问器
        c、不能把抽象类用密封(sealed)来修饰,那就意味着类不能被继承,这违反抽象类被继承的原则。
        d、一个派生于一个抽象类的非抽象类必须包括所有的继承来的抽象方法和访问器的实现

        e、在方法和属性中使用abstract 关键字意味着包含它们的实现。

    一个抽象类可以包含抽象和非抽象方法,当一个类继承于抽象类,那么这个派生类必须实现所有的基类抽象方法

   抽象方法

            当类中的方法在声明的时候加上 abstract 关键字的时候,他就被我们称为抽象方法,但是有个很重要的提醒,只          有在抽象类和接口中才可以使用抽象方法.

               抽象方法有以下特征:

               a、一个抽象方法可以看作是一个虚函数。

               b、抽象方法的声明只能在抽象类中。

               c、因为抽象方法声明只提供一个无实现的方式,没有方法体

               d、方法体的实现被覆写方法提供,覆写方法是一个非抽象类的成员。

               e、抽象属性的行为和抽象方法相像,除了不同的声明形式。

               f、在一个静态属性中使用abstract 是一个错误。

                  *一个抽象属性能够通过派生类使用 override 实现.

未完待续。。。。。










0 0
原创粉丝点击