C++学习------模板

本文介绍了C++中的模板编程,包括函数模板和类模板的定义、使用规则,以及如何通过类型参数和实参类型进行实例化,以实现泛型编程。实例演示了整数、浮点数和字符串的加法函数,以及自定义类的模板应用。
摘要由CSDN通过智能技术生成

C++模板允许使用通用类型定义函数或类等。模板分为函数模板和类模板

模板编程思维:泛型编程、通用编程

定义规则,比如游戏,谁来都可以使用这个规则玩游戏。

两个数相加的函数

这两个数是:整数        小数

int add(int a,int b)
		{
			return  a + b;			
		}
		float add(float a,float b)
		{
			return  a + b;			
		}
		string add(string a,string b)
		{
			return  a + b;			
		}

怎么用模板?

定义模板格式:

        template<class T> 或者 template<typename T>,class和typename都可以用来定义函数或者类模板。

函数模板

template<类型参数表>

返回值类型 函数名(参数列表)

{

}

调用函数模板的方法:函数名<实参类型>(实参列表);

例子:

        #include<iostream>

				using namespace std;

				template <typename T>
				T add(T a,T b)
				{
					return a + b;	
				} 
				
				class Point
				{
				private:
					int xp;
					int yp;
				public:
					Point(int x=0,int y=0)
					{
						xp = x;
						yp = y;
					}
					
					void show()
					{
						cout << "xp:" << xp << ",yp" << yp << endl;
					}
					
					Point operator +(Point &a)
					{
						xp = xp + a.xp;
						yp = yp + a.yp;
						return (*this);
					}
				};

				int main()
				{
					cout << add<int>(3,5) << endl;
					cout << add<double>(5.5,6.7) << endl;
					string s1 = "hello";
					string s2 = " world";
					cout << add<string>(s1,s2) << endl;
					 
					// 类--自定义类型也可以 
					Point a(1,3);
					Point b(2,4);
					
					Point res3 = add<Point>(a,b);
					res3.show();
					return 0;
				}

类模板

template <typename T>

class 类名

{

};

调用类模板的格式:类名 <实参类型> 对象名(实参列表);

#include<iostream>

				using namespace std;

				template <typename T> 
				class A
				{
				public:
					T m;
					T n;
					A(T mm=0,T nn=0)
					{
						m = mm;
						n = nn;
					}
					
					void show()
					{
						cout << "m+n:" << m + n << endl;
					}	
				};

				int main()
				{
					A <int> obj1(3,5);
					obj1.show();
					// "hello"  默认是 char *类型
					A <string> obj2(string("hello"),string("world"));
					obj2.show();
					return 0;
				} 

  • 8
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值