当前位置:七道奇文章资讯编程技术VC/C++编程
日期:2011-03-22 13:54:00  来源:本站整理

C++多态技术[VC/C++编程]

赞助商链接



  本文“C++多态技术[VC/C++编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

择要

本文描写了C++中的各种多态性.重点阐述了面向对象的动态多态和基于模板的静态多态,并初步探究了两种技术的结合利用.

关键词

多态 担当 虚函数 模板 宏 函数重载 泛型编程 泛型情势

导言

多态(polymorphism)一词最初根源于希腊语polumorphos,含义是具有多种情势或形状的情形.在程序计划范畴,一个遍及承认的定义是“一种将差别的特别行为和单个泛化暗号相关联的本领”.和纯粹的面向对象程序计划语言差别,C++中的多态有着更遍及的含义.除了常见的通过类担当和虚函数机制见效于运行期的动态多态(dynamic polymorphism)外,模板也答应将差别的特别行为和单个泛化暗号相关联,由于这种关联处理于编译期而非运行期,因此被称为静态多态(static polymorphism).

事实上,带变量的宏和函数重载机制也答应将差别的特别行为和单个泛化暗号相关联.但是,习惯上我们并不将它们展示出来的行为称为多态(或静态多态).本日,当我们谈及多态时,假如没有明确所指,默许就是动态多态,而静态多态则是指基于模板的多态.不过,在这篇以C++各种多态技术为主题的文章中,我们首先还是回想一下C++社群争辩已久的另一种“多态”:函数多态(function polymorphism),以及更不常提的“宏多态(macro polymorphism)”.

函数多态

也就是我们常说的函数重载(function overloading).基于差别的参数列表,同一个函数名字可以指向差别的函数定义:

// 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 << " ";
  std::cout << "s = " << s << " ";
}

按照参数列表的差别(范例、个数或兼而有之),my_add(1, 2)和my_add(1, "2")被辨别编译为对my_add(int, int)和my_add(int, std::string)的调用.实现原理在于编译器按照差别的参数列表对同名函数举行名字重整,此后这些同名函数就变成了彼此差别的函数.比方说,大概某个编译器会将my_add()函数名字辨别重整为my_add_int_int()和my_add_int_str().


  以上是“C++多态技术[VC/C++编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:

本文地址: 与您的QQ/BBS好友分享!
  • 好的评价 如果您觉得此文章好,就请您
      0%(0)
  • 差的评价 如果您觉得此文章差,就请您
      0%(0)

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .