C++构造函数,模板,重载运算符

11 篇文章 0 订阅
template<typename T>这句话不是全局生效,而是你在一个地方使用就要在一个地方添加
加上这句话后面用T来代替类型就完事了
struct point {
	T x, y;
	point(T x = 0, T y = 0) :x(x), y(y) {}这个格式就是一个构造函数
	这里的直接等于可能是定义的等于也可能是把左值对象内存地址清零
	这里提出一个未解决的问题,在写模板的时候,如果左值是模板类,右值是常数,在没重载运算符的情况下会怎么样
};
//常见的构造函数还有这种
stringstream ss(buf);//代表用buf这个字符串创建一个流

在这里插入图片描述

template<typename T>写模板的时候重载运算符也要用模板
point<T> operator + (const point<T>& a, const point<T>& b) {
	return point<T>(a.x + b.x, a.y + b.y);
}
类型 operator 运算符(参数(不修改要加const){
	return 参数之间的运算;
}
template<typename T>
ostream是输出类型流
ostream& operator << (ostream& out, const point<T>& a) {
	return out << '(' << a.x << ',' << a.y << ')';
}
template<typename T>
istream是输入类型流
istream& operator >> (istream& in, point<T>& a) {
	return in >> a.x >> a.y;
}
模板函数,模板类也要照加不误
template<typename T>
T sum(T* begin, T* end) {这里的begin end,模仿的是迭代器 模板类::iterator
	T ans = 0;
	for (T* p = begin;p != end; p++){
		ans = ans + *p;
	}
	return ans;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值