模板中的操作符重载

本文探讨了在C++编程中使用模板与友元函数来实现矩阵类的输出操作符的过程。作者通过实践发现了非成员函数作为友元时的正确声明方式,并分享了调试过程中的体会。

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

   为了练习刚刚学的模板,就把以前写的一个矩阵的代码拿来试验,结果发现并不是那么容易,特别是当,函数不是类的成员函数时,就出了问题。类中定义友元friend ostream& operator<<(ostream&,const matrix&);

而函数定义为template<typename T>

ostream& operator<<(ostream& os,const matrix<T>& rhs)
{
 for(int ix=0;ix!=4;++ix)
 {
  for(int iy=0;iy!=4;++iy)
   os<<rhs.array1[ix][iy]<<" ";
  os<<endl;
 } 
 return os;

结果仍然报错,实在不明白是为什么,然后在网上查出,将friend ostream& operator<<(ostream&,const matrix&);改为friend ostream& operator<< <>(ostream&,const matrix&);就行了,虽然还是不明白为什么,不过觉得自己还是蛮有收获的,不管学了什么,不实际操练起来,你就能不会发现其中的一些隐藏的要点!看似简单的东西,只有真正的试验后你才能真切的感受到它的奥秘!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值