如何在类模板中重载输入输出运算符和友元函数
来源:互联网 发布:南昌云迈网络做什么的 编辑:程序博客网 时间:2024/06/05 20:01
初学者对类模板中的重载输入输出运算符往往比较头疼,稍微不注意就会出错,并且很难掌握其用法
(注意:输入和输出函数只能以友元函数出现在类中)
(1)、如果是在普通类中重载输出运算符比较简单,下面给出一个具体的实例:
#include<iostream>
using namespace std;
class complex
{
public:
complex(){real=0;image=0;}
complex(double r,double i){real=r;image=i;}
friend ostream& operator << (ostream& output,complex& c);
private:
double real;
double image;
};
ostream& operator << (ostream& output,complex& c)
{
output<<"("<<c.real<<"+"<<c.image<<"i)"<<endl;
return output;
}
int main()
{
complex c1(2,4);
cout<<c1<<endl;
return 0;
}
(2)、如果是在类模板中重载输出运算符,则需要在定义类之前声明重载重载输入运算符的语句,和一些特殊的格式;若不提前声明,编译时系统会显示“xx是类的私有成员,xx不能使用”的错误提示。下面用具体实例说明其应用方法:红色部分为特别注意的地方,套用下面的模板就能正确使用输出运算符在类模板中的重载
#include<iostream>
using namespace std;
//<<<<<<<<<<<<<<<<<<<<<<<<输入运算符重载的声明部分<<<<<<<<<<<<<<<<
template<class type>
ostream& operator << (ostream& output,complex<type>& c);
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
template<class type>
class complex
{
public:
complex(){real=0;image=0;}
complex(double r,double i){real=r;image=i;}
//template<type>
friend ostream& operator << <type> (ostream& output,complex& c);
private:
type real;
type image;
};
template<class type>
ostream& operator << (ostream& output,complex<type>& c)
{
output<<"("<<c.real<<"+"<<c.image<<"i)"<<endl;
return output;
}
int main()
{
complex<int> c1(2,4);
cout<<c1<<endl;
return 0;
}
- 如何在类模板中重载输入输出运算符和友元函数
- C++实现输入输出运算符重载、友元函数和成员函数实现复数类Complex
- 在运算符重载中使用友元函数
- 运算符重载,友元函数,重载输入输出运算符,状态成员,rand(),类的自动转换
- 运算符重载和友元函数
- 友元函数和运算符重载
- 运算符重载和友元函数
- 友元函数、类和运算符重载
- 函数模板和友元重载运算符报"无法解析的外部符"的解决方法
- 队列(queue) 之 c++模板(友元函数和运算符重载)
- 队列(queue) 之 c++模板实现(友元函数和运算符重载)
- C++模板类中声明友元函数重载输入和输出运算符时,提示无法解析的外部符号解决方案
- 重载运算符之友元函数和成员函数
- C++模板类与运算符作为友元函数重载
- 成员函数重载运算符和友元函数重载运算符的比较
- 成员函数重载运算符和友元函数重载运算符的比较
- 成员函数重载运算符和友元函数重载运算符的比较
- 成员函数重载运算符和友元函数重载运算符的比较
- android shape selector style属性心的
- IOS应用设计收藏
- Java命名规则
- Ubuntu 中软件的安装、卸载以及查看的方法总结
- Reversion control
- 如何在类模板中重载输入输出运算符和友元函数
- WP7 Isolated Storage 系列 - 1.Isolated Storage 简介
- xNote结束之际在项目组内部的讲话
- java jacob word
- TRACE
- javascript Table排序
- linux下android开发的环境搭建
- 使用activePDF Toolkit合并PDF并保存书签
- 在Windows7上安装Ubuntu