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

一个网站多个数据库怎么建个人网站

一个网站多个数据库,怎么建个人网站,wordpress交流群,品牌营销ppt前言 前面我们讲到了《什么是函数重载#xff1f;》#xff0c;有了函数重载之后#xff0c;就需要确定某次调用需要选用哪个函数。这个过程可以称之为函数匹配或者重载确定。大多数情况下#xff0c;我们都很容易能够确定某次调用需要选用哪个函数#xff0c;但事实上不…前言 前面我们讲到了《什么是函数重载》有了函数重载之后就需要确定某次调用需要选用哪个函数。这个过程可以称之为函数匹配或者重载确定。大多数情况下我们都很容易能够确定某次调用需要选用哪个函数但事实上不尽然。但通过本文将彻底理清重载函数匹配 匹配过程 为便于说明将函数匹配分为三个阶段确定候选函数确定可行函数确定最佳匹配函数。 确定候选函数 候选函数也就是和被调用的函数同名并且其声明在调用点可见。举个简单的例子。 假设有两个文件1.cpp和2.cpp内容分别如下 1.cpp //函数1void f(int a,short b){coutfunc0endl;}2.cpp #includeiostreamusing namespace std;//函数2void f(int a,double b){coutfunc1endl;}//函数3 void f(int a, int b){cout func2endl;}//函数4void f1(){coutfunc3endl;}int main(){f(3,4.5);return 0;}在这里候选函数其实只有两个其中第一个函数在其调用点不可见而第四个函数和被调用的函数不同名因此这两个都不是候选函数。 确定可行函数 可行函数指的是本次调用传入的实参能够被候选函数使用。它要满足两个条件 一是形参数量和实参数量相同二是每个实参的类型和对应形参类型相同或者能够转换成形参的类型。 还是前面的例子实参的个数和类型与第二个函数完全匹配而在经过算术转换之后也能够与第三个函数匹配。 确定最佳匹配函数 最佳匹配的函数是最终调用的。最佳匹配最基本的思想是认为实参类型越接近它们就越匹配。还是前面的例子实参要与第三个函数匹配需要进行算术转换而与第二个函数完全匹配因此第二个函数是最佳匹配函数。最终的运行结果如下 func1最佳匹配原则 一般来说精确匹配肯定比需要类型转换的匹配要更好但是当形参有多个并且无法完全精确匹配的时候要确定最佳匹配函数就有点困难了。 但是有下面的原则 函数的每个实参的匹配都不能比其他可行函数更差 函数至少有一个实参的匹配要比其他可行函数更好 那么问题又来了什么是更好什么又是更差呢编译器将实参类型到形参类型的转换划分了等级 1.精确匹配包括实参类型和形参类型相同实参从数组或函数转换成对应的指针类型向实参添加顶层const或从实参删除顶层const 2.通过const转换实现的匹配 3.通过类型提升实现的匹配 4.通过算数类型转换实现的匹配 5.通过类类型转换实现的匹配 等级越靠前匹配也就越好。接下来对上面的内容做一些解释。 精确匹配 精确匹配比较容易理解。关于顶层const问题可以参考《什么是函数重载》 通过const转换实现的匹配 所谓通过const转换实现的匹配指的是通过加const限定词能够与可行函数精确匹配。例如 #include iostream using namespace std; //函数1 /* int f(string a) {coutcall function 1endl;return 0; }*/ //函数2 int f(const string a) {coutcall function 2endl;return 0; } int main() {string test  test;f(test);return 0; }在这里test可以通过const转换从而匹配函数2将能够找到最佳匹配函数2当前情况它也只有一个可选了。 运行结果如下 call function 2                                   如果把函数1的注释去掉再运行就会发现虽然第一个调用既能匹配函数1也能匹配函数2但是由于匹配函数2的时候需要const转换因此比精确匹配要差最终它会调用函数1。 去掉函数1的注释后运行结果如下 call function 1                                      通过类型提升实现的匹配 关于类型提升这里不多做介绍。简单说明类型提升规则 float将提升到double char、short和相应的signed、unsigned类型将提升到int 我们来看一个示例 #include iostream using namespace std; //函数1 /* int f(short a) {coutcall function 1endl;return 0; }*/ //函数2 int f( int a) {coutcall function 2endl;return 0; } int main() {short a  2;f(a);return 0; }同样地我们暂时把函数1注释掉。由于a是short类型但是通过类型提升可以转换为int因为它也能调用函数2。运行结果如下 call function 2但去掉函数1注释后由于精确匹配优于通过类型提升的匹配因此将会调用函数1运行结果如下 call function 1通过算术类型转换实现的匹配 short int和floatdouble等之间的转换都是算术类型之间的转换。我们仍然来看一个例子 #include iostream using namespace std; //函数1 int f(int a) {coutcall function 1endl;return 0; } //函数2 int f(double a) {coutcall function 2endl;return 0; } int main() {short a  2;f(a);return 0; }在这里short类型的a既可以通过类型提升转换为int也可以通过算术类型转换成为double。这个时候哪个才是最佳匹配呢我们看运行结果 call function 1对于这个结果并不意外因为前面我们已经说到通过类型提升的转换是优于算术转换的因而函数1是它的最佳匹配函数。 通过类类型转换实现的匹配 这里不多做介绍。我们也很容易理解。诸如父类和子类之间的转换都是如此。 二义性示例 前面基本能够找到最佳匹配我们来看一个有多个可行函数最后却没有最佳匹配的情况。 #includeiostreamusing namespace std;//函数1void f(double a,int b){coutfunction 1endl;}//函数2void f(int a,double b){coutfunction 2endl;}int main(){f(1,1);return 0;}函数1和函数2都是可行函数但它们都没有在任意一个参数上比对方更好因此将会产生二义性编译时将会报错 error: call of overloaded ‘f(int, int)’ is ambiguous总结 调用重载函数时应当避免强制类型转换。 设计重载函数时应避免可能产生的二义性。 如果无法找到可行函数编译器将报错。 设计重载函数的时候希望避免需要用到上面的知识而在定位问题时能够利用上面的知识很快定位问题。
http://wiki.neutronadmin.com/news/113672/

相关文章:

  • 网站建设及维护价钱株洲网站建设开发
  • 郑州新感觉会所网站哪里做的关于网站开发书籍
  • 专业集团门户网站建设费用wordpress响应式插件
  • 白山网站建设公司网站怎样做自适应分辨率大小
  • wordpress如何应用插件下载失败广州seo代理计费
  • 网站建设技术团队2万元自己动手装修房子
  • 网页制作与网站建设江苏建设人才网官网
  • 建设网站毕业设计开题报告wordpress多说
  • 网站开发项目报价单wordpress伪静态301
  • 贵阳网站建设天锐科技完爆网站开发经典实例
  • 宁波做微信网站四川省城乡建设厅官方网站
  • 网站建设运营要求html怎么做移动端网站
  • 网站建设需求分析报告功能网站接入查询
  • 包头市建设厅官方网站昆明网站建设平台
  • 公司备案查询网站备案珠海做网站哪家专业
  • 上海市住房建设部官方网站中国网络推广网站排名
  • 门户网站安全建设个人做网站平台
  • 建设银行网站的特点优势做yield网站多少钱
  • 网站建设和网络优化请示asp网站部署 iis7
  • 微信h5网站开发做网站需要的资料
  • 好知网做网站百度广州分公司容易进吗
  • 国外做二手工业设备的网站网站成品超市
  • 安云自助建站系统源码网页编辑岗位职责
  • 网站用nodejs做后台百度网站的目标
  • 旅游网站开发需求分析目的北京做网站公司排名浩森宇特
  • 青岛网页设计招聘百度搜索优化
  • 微信网站设计模板下载保定seo企业网站
  • 好的手机网站建设公司苏州seo安严博客
  • world做网站wordpress 后台登陆不进去
  • 与网站建设有关的课程和知识点网站推广公司哪