目录

  • 1 绪论
    • 1.1 结构化程序设计的特点
    • 1.2 OOP的特点
  • 2 C++语言基本要素
    • 2.1 语言基本要素
  • 3 指针与引用
    • 3.1 值传递
    • 3.2 static修饰符
    • 3.3 指针
    • 3.4 引用
    • 3.5 const修饰符
  • 4 类与对象
    • 4.1 类与结构体
    • 4.2 static修饰类的属性
    • 4.3 初始化与构造
    • 4.4 析构
  • 5 两类多态
    • 5.1 静态多态
    • 5.2 动态多态
    • 5.3 函数间关系
    • 5.4 动态多态的应用
    • 5.5 习题
  • 6 高级面向对象思想
    • 6.1 可维护性与可复用性
    • 6.2 面向对象思想原则
    • 6.3 对象间的关系
    • 6.4 习题
  • 7 杂项
    • 7.1 两类内存泄漏
    • 7.2 RAII与ScopeGuard习语
    • 7.3 复杂模型设计1
    • 7.4 复杂模型设计2
    • 7.5 复杂模型设计3
静态多态
  • 1 重载
  • 2 函数模板
  • 3 类模板


两类多态:

  第一类:编译决定。由编译器在程序的编译环节进行函数调用或资源访问的匹配决定,形成绑定串(bingding String)。

 

  为了让程序能够适应变化,我们可以预先提供不同参数形式的同名函数。

             1、函数重载(function overloading)

    定义:同一名字空间域中,同名但不同参数形式的函数之间,互称函数重载关系

//main.cpp

#include "f.h"

int main()

{

//overload function 函数重载

// (chong zhong)   函数过载

//尽量不直接使用常量

int a = 5;

float b = 5.6;

f(a);  //f@int  

f(b);  //f@float

     return 0;

}



//f.h

void f(int);

int f(float);


//f.cpp

void f(int x)

{

  //...

}


int f(float y)

{//...

 return 0;

}


编译main.cpp时,生成绑定串,这就是编译决定:编译器通过检查调用和声明的关系,来生成绑定串;链接时,再根据绑定串去顺序链入定义体obj。

  同名函数可以具有不同的形式(参数形式不同),这种多态由编译器根据参数类型来进行区别绑定。

重载是程序员主动编写的同名不同参的函数形式。