关闭

C++学习笔记04之模板应用简介

标签: 编程语言C++函数class模板
194人阅读 评论(0) 收藏 举报
分类:

C++中的模板应用广泛,下面从三个方面进行简介:


        1. 类模板 class template

        声明:

template<typename T>
class complex
{
public:
	complex (T r = 0, T i = 0)
	  : re (r), im(i)
	{	}
	complex& operator += (const complex&);
	T real () const {	return re;	}
	T img () const { return im;	}
private:
	T re, im;

	friend complex& _doapl (complex*, const complex&);
};
        使用举例:

{
	complex<double> c1(2.5, 1.5);
	complex<int> c2(2, 6);
	...
}


        2. 函数模板

        声明:

template <class T>
inline const T& min(const T& a, const T& b)
{
	return b < a ? b : a;
}

class stone
{
public:
	stone(int w, int h, int we)
	  : _w(w), _h(h), _weight(we)
	  {	}
	bool operator< (const stone& rhs) const
	{
		return _weight < rhs._weight;
	}

private:
	int _w, _h, _weight;
};
        使用举例:

{
	stone r1(2, 3), r2(3, 3), r3;
	r3 = min(r1, r2);
	...
}

        3. 成员模板

        声明:

class Base1 {	};
class Derived1: public Base1 {  };
class Base2 { };
class Derived2: public Base2 {  };

pair<Derived1, Derived2> p;
pair<Base1, Base2> p2(p);
// pair<Base1, Base2> p2(pair<Derived1, Derived2>());

template <class T1, class T2>
struct pair {
...
	T1 first;
	T2 second;
	pair() : first(T1()), second(T2()) {}
	pair(const T1& a, const T2& b) :
		first(a), second(b) {}
		
	template<class U1, class U2>
	pair(const pair<U1, U2>& p) :
		first(p.first), second(p.second) {}
};






0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:12902次
    • 积分:670
    • 等级:
    • 排名:千里之外
    • 原创:48篇
    • 转载:9篇
    • 译文:0篇
    • 评论:10条
    个人说明
    个人很喜欢的一句话, (摘自网络):
    时光荏苒,祝愿不要忘记曾经的初心

    本人现在是一名大二软件工程专业的学生, 每月会坚持更新, 本博客会总结, 整理, 分享个人学习的相关技术知识, 用来记录自己不断进步的历程, 当然内容会以Java为主线.

    虽然是技术博客, 但毕竟是人, 也有自己的情感, 所以, 有时也会分享一些有用的学习资源和一些学习经验和方法, 同时也会写一些其它方面上自己的感受和想法!

    或许我的博客不是写得非常好, 但每一篇文章绝对会用心写! 如果, 你发现有不足或者错误之处, 非常欢迎指出, 当然也欢迎各位小伙伴们来交流技术和学习感受.

    每天进步一点点, 共勉!
    博客专栏
    最新评论