template

-类型成为参数

-function template

    Perform similar operations on different types of data.

    eg: swap function template

template <classT>
void swap( T&x , T&y ){
	T temp=x;
	x=y;
	y=temp;
}

    -syntax:

        Only exact match on types is used.

        parameter types represent: -types of arguments to the function

                                                     -return type of the function

                                                     -declare variables within the function

    -template: declaration    

-function instantiation

    -The compiler deduces the template type from the actual arguments passed into the function.

    -Can be explicit:

        eg: the parameter is not in the function signature (older compiler won't allow this)

#include <iostream>
template <class T>

void foo(void){
	T a;
}

int main(){
	foo<int>();
	foo<float>();
	
	return 0;
}

    -templates can use multiple types

        template< class A, class B>

    -one more example:

#include <iostream>
template <class T>

void bubble_sort(vector<T> &a){
	const size_t last=a.size()-1;//size_t的全称应该是size type,就是说“一种用来记录大小的数据类型”。
				     //因为size_t类型的数据其实是保存了一个整数,所以它也可以做加减乘除,
				     //也可以转化为int并赋值给int类型的变量。
	for(int i=0;i<last-1;i++){
		for(int j=i+1;j<last;j++){
			if(a[j]<a[j-1]){     //the '<' has to be overloaded if T is a self-defined class
				swap(a[j],a[j-1]);//which swap?
			}
		}
	}		
}

int main(){
	
	return 0;
}

-templates and inheritance

    -templates can inherit from non-template classes

        template <class A>

        class Derived : public Base { ... }

    -templates can inherit from template classes

        template <class A>

        class Derived : public List<A> { ... }


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值