c++模板使用

这篇博客探讨了C++中的模板函数,包括无参模板函数和带有默认参数的模板函数,以及类成员模板的使用。示例展示了如何定义和调用模板函数,以及在类中使用模板成员函数处理不同类型的数据。同时,还介绍了如何使用模板处理指针参数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#include<iostream>

using namespace std;

    
template<class T>
T square(T number)
{
    return number * number;
}
int main()
{

 int a =10;
 cout<<"aa= "<<square(a)<<endl;
 float b =9.9;
 cout<<"bb= "<<square(b)<<endl;
 return 0;
}

#include<iostream>

using namespace std;


template<class T,class D>
T square(T number,D a)
{
 return number * a;
}
int main()
{

int a =10;
char c =8;
cout<<"aa= "<<square(a,c)<<endl;
float b =9.9; 
int d = 5;
cout<<"bb= "<<square(b,d)<<endl;
return 0;
}
//类内使用函数模板
#include<iostream>
#include<vector>
#include<iterator>
 
using namespace std;
 
//template<class T, class D>
class Member
{
public:
//	Member(T t, D d): name(t), sal(d){}
    Member(string t,double d): name(t), sal(d){}
    template<class T, class D> 
	void print(T a, D b);
private:
	string name;
	double sal;
 
};

/* 
template<class T, class D>
void Member<T, D>::print()
{
	cout<<name<<" "<<sal<<endl;
}*/
template<class T, class D> 
void Member::print(T a, D b)
{
	cout<<name<<" "<<sal<<endl;
	cout<<a<<" "<<b<<endl;
}
//====================================================
int main()
{
	typedef Member M;
	vector<M> v;
	v.push_back(M("Linda",75000));
	v.push_back(M("Robert",60000));
	vector<M>::iterator it = v.begin();
	cout<<"Entire vector:"<<endl;
	while(it!= v.end())
		(it++)->print(12,"qqq");
	cout<<endl;
	cout<<"Return form front()"<<endl;
	v.front().print(13,"qqt");
	return 0;
}
//类内使用带指针参数的函数模板

#include<iostream>
#include<vector>
#include<iterator>
 
using namespace std;
 
//template<class T, class D>
class Member
{
public:
//	Member(T t, D d): name(t), sal(d){}
    Member(string t,double d): name(t), sal(d){}
    template<class T, class D> 
	void print(T* a, D b);
private:
	string name;
	double sal;
 
};

/* 
template<class T, class D>
void Member<T, D>::print()
{
	cout<<name<<" "<<sal<<endl;
}*/
template<class T, class D> 
void Member::print(T* a, D b)
{
	cout<<name<<" "<<sal<<endl;
	cout<<*a<<" "<<b<<endl;
}
//====================================================
int main()
{
	typedef Member M;
	vector<M> v;
	v.push_back(M("Linda",75000));
	v.push_back(M("Robert",60000));
	vector<M>::iterator it = v.begin();
	cout<<"Entire vector:"<<endl;
	int d =123;
	while(it!= v.end())
		(it++)->print(&d,"qqq");
	cout<<endl;
	cout<<"Return form front()"<<endl;
	d =13;
	v.front().print(&d,"qqt");
	return 0;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值