游戏开发准备 C++ 基础回顾(一),


游戏开发,最主要的语言还是C++,离开学校快一年,借这个机会,将快忘了的C++基础知识再回顾一遍,同时也梳理一下其他的和面试相关的知识。

首先,C++ 完全支持面向对象(注1)的程序设计,包括面向对象开发的四大特性(也有人说三大特性,没有 抽象):

  • 封装
  • 抽象
  • 继承 
  • 多态

封装,指对象要有一个明确的边界;边界的划分(对象各司其职、对象的粒度、对象的可重用性),对于对象的方法声明是公开的,但是实现方法的过程是隐藏的,这样做的好处是当对象修改自己方法的实现过程时,不会影响到程序对对象的使用。

抽象,具有相同或相似性质的一组对象的抽象就是类,类是对一类事物的描述,是抽象的、概念上的意义。对象的抽象是类,类的具体化就是对象,也可以说类的实例就是对象。类用来描述一系列对象,概述了每个对象应包括的数据,并概述了每个对象的行为特征。

继承,父与子的关系,将共性放在父类中,个性放在子类中,每个子类在保有自己个性的同时,继承了父类的共性。通俗的说,父类到子类,就是由一般到特殊。C++中,继承都是单继承,即每个子类只能继承一个父类,但是一个父类可以有多个子类。

多态,运行时多态。
  子类的对象放在父类的引用中,例如 Animal a=new Dog,子类对象当父类对象来使用。
        1.多态原则:
                  (1)对象类型不变
                  (2)只能用引用调用其引用类型中定义的方法
                  (3)运行时,根据对象的实际类型去找子类覆盖之后的方法
             例子:
                  有Animal类中有eat()和sleep()两个方法,sleep()中睡8小时;子类Dog中有
                  eat()方法,sleep()方法中睡6小时,还有wangwang()方法。
                  现创建Animal a=new Dog(); 不能调用a.wangwang(); 调用a.sleep()输出睡6小时。

          2.对象的强制转换
                 格式: 引用 instanceof 类型
                        引用所指的对象是否与类相符,返回值boolean值。
                 用法:
                       Animal a=new Cat();
                       if(a instanceof Dog)
                       {
                          Dog d=(Dog)a;
                          d.wangwang();
                        }
                 说明:如果只有Dog d=(Dog)a;运行时错误,因为a是Cat而不是Dog (多态原则第一条)

          3.多态的灵活变换
                  (1)用于参数列表上:
                               public void m(A a){} 可以用A类的任何子类对象作为参数
                  (2)用在返回值上:
                              public A m(){}  这个方法可能返回A类的任何子类对

 

 

注1: 面向对象和面向过程的区别

面向过程 就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。

面向对象 是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。

相关内容

    暂无相关文章