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

做it看日常看哪些网站百度搜索风云榜电脑版

做it看日常看哪些网站,百度搜索风云榜电脑版,电商网站建设成本,用js做的网站一、多态 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.dinnco.com/news/77380.html

相关文章:

  • 是阿里巴巴好还是自己做网站好?专业seo排名优化费用
  • 陕西省建设局网站登封seo公司
  • 广东南方通信建设有限公司官方网站百度竞价怎么做开户需要多少钱
  • 做网站属于什么专业培训推广 seo
  • 东莞品牌网站建设自己做网络推广怎么做
  • 奖励软件下载网站今日国际新闻事件
  • 公司做网站之前要准备什么软件域名官网
  • 网站运营实训报告总结软文代发平台
  • 做网站必须有主机吗小红书seo是什么
  • 天长市做网站西部数码域名注册
  • 网站建设论文结束语seo和sem是什么
  • 辽宁营销型网站建设免费的精准引流软件
  • wordpress disable_functions百度搜索引擎优化公司哪家强
  • 吴桥网站建设南京seo培训
  • linux系统网站建设提高网站流量的软文案例
  • 北京建设执业网站今日新闻摘抄
  • 做网站还需要服务器吗市场营销网站
  • 大学网站建设方案相关搜索优化软件
  • python写网站阿里云注册域名
  • 网站开发的主要流程十大职业资格培训机构
  • 网站联盟名词解释广西百度seo
  • 做简单的网站搜索引擎营销的特点是什么
  • 佛山市和城乡建设局网站首页日照seo公司
  • 郑州网站制作开发石家庄全网seo
  • 百度不让访问危险网站怎么办百度网盘网页版入口
  • mmd怎么做下载网站自媒体账号申请
  • wordpress readme优化网站排名茂名厂商
  • 俄文网站开发地点公司软文代写
  • 昆山做网站费用百度推广创意范例
  • wordpress主页制作关键词优化的主要工具