c++函数模板 引用交换和指针交换类模板
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c++函数模板 引用交换和指针交换类模板,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2300字,纯文字阅读大概需要4分钟。
内容图文
![c++函数模板 引用交换和指针交换类模板](/upload/InfoBanner/zyjiaocheng/641/5c0d34a91e9d40f9be882455793e5bcc.jpg)
函数模板
模板技术,类型参数化,编写代码可以忽略类型
为了让编译器区分是普通函数还是模板函数
// 模板.cpp: 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include<iostream>
using namespace std;
template<typename T>//template<class t>
//告诉编译器,下边是模板函数
void Myswap(T*a, T*b)
{
T temp= *a;
*a = *b;
*b = temp;
//cout << "in a=" << *a << " b=" << *b << endl;
}
template<typename T>
void Myswap1(T&a, T&b)
{
T temp = a;
a = b;
b = temp;
}
void test()
{
int a = 10, b = 20;
double c = 3.0, d = 4.0;
cout << "a=" << a << " b=" << b << endl;
//1.自动类型推导
Myswap(&a, &b);
cout << "a=" << a << " b=" << b << endl;
cout << "c=" << c << " d=" << d<< endl;
//1.自动类型推导,编译器根根据传的值自动推导类型
Myswap1(c, d);
cout << "c=" << c << " d=" << d << endl;
//2显示指定类型
Myswap1<int>(a,b);//不能传 c,d
}
int main()
{
test();
return 0;
}
****函数模板不允许自动类型转换,普通模板可以进行自动类型转换
函数模板可以被重载
编译器优先考虑普通函数,如果模板可以产生更好好的匹配,那么选择模板,如果一定要调用模板,那么要
MyAdd<>(a,b)//加尖括号
类模板
// 模板.cpp: 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include<iostream>
using namespace std;
template<typename T>
class Person {
public:
Person(T id, T age)
{
cout << "hhh" << endl;
this->id = id;
this->age = age;
}
void show()
{
cout << "id " << id << "age" << age << endl;
}
private:
T id;
T age;
};
void test01()
{
//函数模板在调用时可以自动类型推导
//类模板必须显示指定类型
Person<int> p(10, 20);
p.show();
}
int main()
{
test01();
return 0;
}
对char类型和int类型数组进行排序
// 模板.cpp: 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include<iostream>
using namespace std;
template<class T>
void print(T *arr, int len)
{
for (int i = 0; i < len; i++)
{
cout << arr[i] << " ";
}
cout << endl;
}
template<typename T>
void mysort(T *arr, int len)
{
for (int i = 0; i < len; i++)
{
for (int j = i + 1; j < len; j++)
{
//从大到小排序
if (arr[i] < arr[j])
{
T temp;
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
}
int main()
{
int arr[] = { 1,5,4,2,3,9,6,8 };
int len = sizeof(arr)/sizeof(int);//总长度/单位长度=个数
print(arr, len);
mysort(arr, len);
print(arr, len);
char ch[] = { 'a','h','b','p' };
int len1 = sizeof(ch) / sizeof(char);
print(ch, len1);
mysort(ch, len1);
print(ch, len1);
return 0;
}
weixin_41375103
发布了26 篇原创文章 · 获赞 2 · 访问量 2158
私信
关注
内容总结
以上是互联网集市为您收集整理的c++函数模板 引用交换和指针交换类模板全部内容,希望文章能够帮你解决c++函数模板 引用交换和指针交换类模板所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。