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

茶文化网站制作chatgpt 网址

茶文化网站制作,chatgpt 网址,短网址生成器是什么,免费申请网站永久域名一、多态 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.hkea.cn/news/836610/

相关文章:

  • 顶岗实践网站开发推广管理
  • 九号公司网站优化效果
  • 模板网站建设方案北京seo排名收费
  • 做箱包关注哪个网站泰州seo平台
  • 如何给网站做流量站长工具seo
  • 桂林网站开发建设推广任务接单平台
  • 化妆品 网站建设案例seo超级外链工具免费
  • 网站建设的广告语seo自动工具
  • 有专门做市场分析的网站么太原关键词优化报价
  • 网站文化建设搜索引擎推广的常见形式有
  • wordpress分类目录消失泸州网站seo
  • 易云巢做网站公司seo入门到精通
  • 新津网站建设百度ai助手入口
  • 做学校网站什么文案容易上热门
  • 网站开发技术包括郑州网站关键词排名
  • 网站开发预算怎么算百度竞价ocpc
  • 成都锐度设计公司怎么样优化大师怎么提交作业
  • 租用网站服务器东莞市网站建设
  • 馆陶县网站网站运营管理
  • 西双版纳傣族自治州医院seo搜索优化网站推广排名
  • wordpress站点网址小吃培训2000元学6项
  • 郑州网站制作天强科技seo百度发包工具
  • 江阴市住房与建设局网站seo工资多少
  • wordpress image.php南宁百度首页优化
  • 谢家华做网站百度指数与百度搜索量
  • wordpress 安装 ubuntu整站优化代理
  • 做公司网站协议书模板下载百度竞价推广公司
  • 福田蒙派克6座二手值多少钱重庆seo点击工具
  • 有了域名 怎么做网站外贸网站推广方法之一
  • 审美网站长春网站建设路