牛客选择题刷题总结——C++篇(更新ING)

1、模板函数和强制类型转换问题

  • 模板函数的定义:

        template<class T>

        T fun(T x,T y)

      {

          return x*x + y*y;

      }

  • 对于模板函数的调用,类型需要一致 

      fun(1, 2)     

     fun(1.0, 2)   

     fun<float>(1,2.0)   对(为强制类型转换,后面的实参会强制转换成为float类型,因此类型也是一致的)

    

   2、定义数组时,元素个数参数的表达问题

        一维数组的定义方法:     元素类型 数组名[E];

       其中E只能是整型常量表达式。

        例如: int a[2];

                   但是这样就不可以:int x=2, y=3;  int a[x+y];                   错误的定义

                   这样就对了:const int x=2, const int y=3; int a[x+y];       正确的定义  

3、 多态(静态绑定和动态绑定

  • 面向对象有三种特性:封装,继承,多态。其中多态性有两种:

       1)一种是依靠函数重载实现的静态绑定

       2)一种是依靠虚函数实现的动态绑定,动态绑定跟对象的引用类型无关,他会根据具体的对象调用对                                                应的方法。

  • 什么是静态绑定和动态绑定,他们有什么区别?

                                               定义

       静态类型:对象在声明时采用的类型,在编译期既已确定;

       动态类型:通常是指一个指针或引用目前所指对象的类型,是在运行期决定的;

       静态绑定:绑定的是静态类型,所对应的函数或属性依赖于对象的静态类型,发生在编译期

       动态绑定:绑定的是动态类型,所对应的函数或属性依赖于对象的动态类型,发生在运行期

                                                  区别

      1)静态绑定发生在编译期,动态绑定发生在运行期;

      2)对象的动态绑定类型可以更改,但是静态绑定类型无法更改;

      3)要想实现动态,必须使用动态绑定;

      4)在继承体系中只有虚函数使用的是动态绑定,其他的全是静态绑定。

猜你喜欢

转载自blog.csdn.net/gaoyu1253401563/article/details/89202856