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

做网站的尺寸1920谷歌官网

做网站的尺寸1920,谷歌官网,手机网站创建,徐州住房与建设局网站函数模板优点是通用性&#xff0c;可以解决某个方面的普遍性问题&#xff0c;但是这个世界上的事情不是绝对的&#xff0c;有普遍的&#xff0c;就有绝对的。举个栗子&#xff1a; #include <iostream> using namespace std; template <typename T> void Swap(T &…

函数模板优点是通用性,可以解决某个方面的普遍性问题,但是这个世界上的事情不是绝对的,有普遍的,就有绝对的。举个栗子:

#include <iostream>
using namespace std;
template <typename T>
void Swap(T &a,T &b) {T temp = a;a = b;b = temp;return ;
}
class CGirl {public:int m_bk;//编号string m_name;	      //姓名int m_rank;	      //排名
};int main() {return 0;
}

我要是只想用这个Swap函数交换超女类的排名,不交换其他成员,这样的话swap函数模板中现有的代码就不合适了;

——————————————————————————————————————————

为了满足特殊的需求,可以提供一个具体化的函数,当编译器找到与函数调用匹配的具体化定义时,将使用该定义,不再寻找模板。————函数模板的具体化!!

语法:

template <> void 函数模板名 (参数列表)

//函数体;

}

#include <iostream>
using namespace std;class CGirl {public:int m_bk;//编号string m_name;	      //姓名int m_rank;	      //排名
};
template <typename T>
void Swap(T &a,T &b) {T temp = a;a = b;b = temp;return ;
}
//具体化函数:
template <> void Swap<CGirl>(CGirl& g1, CGirl& g2)
//template <> void Swap(CGirl& g1, CGirl& g2) 这两种方法是一样的;
{int temp = g1.m_rank;g1.m_rank = g2.m_rank;g2.m_rank = temp;cout << "带哦用的Swap(CGirl &g1,CGirl &g2)\n";return ;
}int main() {int a = 10, b = 20;Swap(a, b);cout << "a = " << a << ", b = " << b << endl;CGirl g1, g2;g1.m_rank = 1;g2.m_rank = 2;Swap(g1, g2);cout << "g1.m_rank = " << g1.m_rank << " , g2.m_rank = " << g2.m_rank << endl;return 0;
}

对于给定的函数名,可以有普通函数,函数模板和具体化的函数模板,以及他们的重载版本;

编译器用用各种函数的规则:

1:具体化优先于常规模板,普通函数优先于具体化和常规模板;

2:如果希望使用函数模板,可以用空模板参数强制使用函数模板;

3:如果函数模板能产生更好的匹配,将优先于普通函数。

#include <iostream>
using namespace std;void Swap(int a , int b) {cout << "使用了普通函数。\n";
}
template <typename T>
void Swap(T a,T b) {cout << "使用了函数模板。\n";
}
//具体化函数:
template <> 
void Swap(int a,int b)
{cout << "使用了具体化的函数模板。\n";
}int main() {Swap(1, 2);return 0;
}

普通函数优先于函数模板,所以编译器选择第一个,普通函数;

使用了普通函数。C:\Users\代伟业\Desktop\C++\初始化列表\this指针\x64\Debug\this指针.exe (进程 23260)已退出,代码为 0。
按任意键关闭此窗口. . .

如果把普通函数注释掉:选择了具体化的函数模板:

#include <iostream>
using namespace std;//void Swap(int a , int b) {
//	cout << "使用了普通函数。\n";
//}
template <typename T>
void Swap(T a,T b) {cout << "使用了函数模板。\n";
}
//具体化函数:
template <> 
void Swap(int a,int b)
{cout << "使用了具体化的函数模板。\n";
}int main() {Swap(1, 2);return 0;
}
使用了具体化的函数模板。C:\Users\代伟业\Desktop\C++\初始化列表\this指针\x64\Debug\this指针.exe (进程 13556)已退出,代码为 0。
按任意键关闭此窗口. . .

如果把具体化版本的代码注释掉,再运行,只能使用函数模板了:

#include <iostream>
using namespace std;//void Swap(int a , int b) {
//	cout << "使用了普通函数。\n";
//}
template <typename T>
void Swap(T a,T b) {cout << "使用了函数模板。\n";
}
//具体化函数:
//template <> 
//void Swap(int a,int b)
//{
//	cout << "使用了具体化的函数模板。\n";
//}int main() {Swap(1, 2);return 0;
}
使用了函数模板。C:\Users\代伟业\Desktop\C++\初始化列表\this指针\x64\Debug\this指针.exe (进程 21920)已退出,代码为 0。
按任意键关闭此窗口. . .

----------

如果不想使用普通函数,想使用函数模板,可以加空模板参数:

#include <iostream>
using namespace std;void Swap(int a , int b) {cout << "使用了普通函数。\n";
}
template <typename T>
void Swap(T a, T b) {cout << "使用了函数模板。\n";
}
//具体化函数:
template <> 
void Swap(int a,int b)
{cout << "使用了具体化的函数模板。\n";
}int main() {Swap<>(1, 2);return 0;
}
使用了具体化的函数模板。C:\Users\代伟业\Desktop\C++\初始化列表\this指针\x64\Debug\this指针.exe (进程 23204)已退出,代码为 0。
按任意键关闭此窗口. . .

如果把具体化版本的代码注释掉,再运行,只能使用函数模板了:

http://www.hkea.cn/news/12269/

相关文章:

  • 怀柔武汉阳网站建设数据分析师报考官网
  • 学院招生网站建设方案seo优化排名是什么
  • 旅行网站首页模板百度网盘下载
  • 河南免费网站建设公司搜索引擎优化是指什么意思
  • wordpress主题——b5安卓优化
  • 山西网站建设多少钱网页制作接单
  • 网站建设怎么付费郑州seo学校
  • 企业网站无线端怎么做免费b站推广网址有哪些
  • 英才网seo的工作内容主要包括
  • 全面加强政府门户网站建设哪里做网站便宜
  • 深圳网站建设合同范本色盲测试图看图技巧
  • 怎么做亚马逊网站竞价网站
  • 做招商网站的前景怎么样品牌网络营销策划
  • 苏州新区做网站宁波seo行者seo09
  • 做一份seo网站诊断西安关键词优化平台
  • 外贸公司网站如何做推广营销渠道策略
  • 哈尔滨网站建设流程360浏览器网页版入口
  • wordpress 如何修改主图cssseo系统推广
  • 阿里云能放企业网站吗小黄豆crm
  • 富阳网站建设惠州网站建设
  • 北京优化网站方法百度官方客服平台
  • 哪个网站开发好微商软文范例大全100
  • wordpress 301重定向插件长春seo网站排名
  • free wordpress湖南专业seo公司
  • 学院网站建设开题报告如何创建网站教程
  • 开网站怎么赚钱软文推广渠道主要有
  • 南联网站建设深圳谷歌优化seo
  • 站酷设计官网软件开发app制作
  • 永城市专业做网站广州网站建设技术外包
  • 怎么知道网站是否被百度收录韶关疫情最新消息