当前位置: 首页 > news >正文

做it看日常看哪些网站seo报名在线咨询

做it看日常看哪些网站,seo报名在线咨询,网站建设 新闻,海拉尔网站建设平台一、多态 Polymorphism,多态。学习过c的人如果不知道多态,基本上就是打入c内部的C程序员了。在前边曾经对多态进行过分析,对其中的虚函数(虚表等)也进行过较为详细的说明。 多态其实非常好理解,不要硬扣书…

一、多态

Polymorphism,多态。学习过c++的人如果不知道多态,基本上就是打入c++内部的C程序员了。在前边曾经对多态进行过分析,对其中的虚函数(虚表等)也进行过较为详细的说明。
多态其实非常好理解,不要硬扣书本上的定义。多态,顾名思意,就是一种行为,多种状态结果。明白了这个意思,再回头和概念对照,就非常容易理解了。
多态可以分为静态多态和动态多态两类,一般来说,在国内的教科书里,只会讲后面的动态多态。估计原因是动态多态比较容易成体系的和继承一起来分析说明,而静态多态需要的知识体系相对分散许多,又和实际应用紧密结合,所以很多国内的教科书就将其略去了。
另外还可以对多态划分成通用多态(universal polymorphism)和特定多态(Ad-hoc polymorphism),就看划分的标准的和方式了。
所以在这里,不对动态多态进行分了,只对静态多态进行一个总结性的分析说明。

二、静态多态

静态多态和动态多态不同在于,静态多态的实现是在编译期实现的,而动态多态是在运行时绑定的,所以动态多态的行为又叫做迟后联编。既然静态编译是在编译期实现的,那么学习过C++的程序员就可以想一下,在编译实现的技术有哪些?尽量想,想得到的并和多态的实现结果能扯上关系的,基本就是它了。
那么在c++中有哪几种技术可以实现静态多态呢?
1、模板和宏
其实这个非常好理解,利用模板可以轻松的实现类似多态的方式,所以模板和宏是实现静态编译的最强大的方式。在这种方式里,特别需要注意带参数的宏实现,也就是常见的带参数的宏实现。
2、函数重载(或运算符重载)
这个就不用详细介绍了吧,前面已经分析过很多了。

其实这两类就是参数化多态和非参数化多态(或者叫特定多态)的具体形式。这里顺便介绍一下,所以特定多态(Ad-hoc polymorphism),又可以分为强制多态和重载多态,前者指在参数传递时的隐式转化形成的多态后者只函数的重载造成的多态。

三、例程

在知晓了静态多态的定义后,再看下面的例程加深一下印象:

#include <iostream>
template <class T>
class Base
{
public:void Display(){static_cast<T*>(this)->Data();}static void Call(){T::Call();}
};class Derived : public Base<Derived>
{
public:void Data() { std::cout << "Derived function :Data()" << std::endl; };static void Call() { std::cout << "Derived function :Call()" << std::endl; };
};
int main()
{Derived d;Base<Derived> *b = &d;b->Display();b->Call();
}

上面这个例程在前面的CRTP中进行过分析,应该很好理解。
再看一个宏实现多态的:

#include<stdio.h>
#include<malloc.h>
#include<string.h>
#include <iostream>#define Data(T) \
struct data_ ##T \
{\T data;\
}int main()
{Data(int) dInt = { 16 };Data(char) dDb = {'a'};std::cout<< dInt.data<<","<< dDb.data<<std::endl;return 0;
}

同样非常好理解,如果有看过MFC相关源码的,可以发现这个只是一个非常小的实现罢了。不过,在绝大多数情况下,不建议使用宏来实现复杂的功能,包括上面的这种静态多态。
至于重载和运算符重载的例程满天飞,这里就不再赘述了。大家如果有不熟悉的翻翻书就可以了。

四、总结

从比较正式的定义来说,在c++中,一般不会把特定多态或者宏多态称为多态,以方便和C语言区分,一般来说,静态多态指的就是模板的静态多态。
其实很多的定义和概念并不是说有多么特别的技术在内,很重要的一点在于通过这些定义或概念来更好的理解实际应用中的应用。可以简单将其当成一种对实际应用的抽象,从某种角度了对知识体系的一种系统的归类总结。这是学习编程的另外一种经验,大家可以借鉴一下。

http://www.zhongyajixie.com/news/18137.html

相关文章:

  • 网站会员系统源码app开发公司哪家好
  • 已有网站做百度推广市场推广的方法和规划
  • 专业企业网站开发企业查询系统官网
  • 网站建设公司 倒闭网络推广的具体方式
  • 玉树网站建设公司网页模板大全
  • 网站 内容优化互联网推广招聘
  • 做原创的网站百度的排名规则详解
  • 上海市住房城乡建设部网站电商平台有哪些?
  • 网页设计 网站建设 哪个好兰州seo新站优化招商
  • php网站开发具体的参考文献北京网络优化推广公司
  • 怎么免费做一个网站做淘宝客查关键词热度的网站
  • 谷歌seo外贸推广韩国seocaso
  • 哪个网站可下载免费ppt怎么样做推广
  • 尚海整装电话号码seo关键词排名在线查询
  • 他达拉非哪个牌子好搜索引擎优化师
  • 网站被qq拦截 做301网站seo优化教程
  • 怎么免费建立自己的网站平台广西南宁做网站的公司
  • 做任务赚钱的网站微博seo营销
  • vip影视网站怎么做的白杨seo教程
  • 大概开发一个网站多少钱长沙靠谱关键词优化服务
  • 自己做网站花钱吗网络推广方案设计
  • 聚名网注册seo外包公司排名
  • 临沂网站建设报价搜索引擎优化seo应用
  • wordpress响应式视频主题百度的seo关键词优化怎么弄
  • 禁用wordpress裁剪上海网络推广优化公司
  • 中山建设局网站简述搜索引擎优化
  • 企业网站如何做优化百度软件应用中心
  • 用响应式做旧书网站域名服务器ip查询网站
  • 哪个网站是专门做兼职的代哥seo
  • 人大代表网站建设新疆疫情最新情况