第3个回答 推荐于2017-09-27
多态(polymorphism)一词最初来源于希腊语polumorphos,含义是具有多种形式或形态的情形。在程序设计领域,一个广泛认可的定义是“一种将不同的非凡行为和单个泛化记号相关联的能力”。
和纯粹的面向对象程序设计语言不同,C++中的多态有着更广泛的含义。除了常见的通过类继续和虚函数机制生效于运行期的动态多态(dynamic polymorphism)外,模板也答应将不同的非凡行为和单个泛化记号相关联,由于这种关联处理于编译期而非运行期,因此被称为静态多态(static polymorphism)。
基于不同的参数列表,同一个函数名字可以指向不同的函数定义:
// overload_poly.cpp
#include <iostream>
#include <string>
// 定义两个重载函数
int my_add(int a, int b)
{
return a + b;
}
int my_add(int a, std::string b)
{
return a + atoi(b.c_str());
}
int main()
{
int i = my_add(1, 2); // 两个整数相加
int s = my_add(1, "2"); // 一个整数和一个字符串相加
std::cout << "i = " << i << "\n";
std::cout << "s = " << s << "\n";
}