C++友元重载运算符,模板类友元重载
2016-08-21 15:09
190 查看
#include <iostream>
using namespace std;
template <class T>
class Test; // 模板类前置声明
template<class T>
ostream& operator << (ostream& out, const Test<T>& obj); // 模板类友元前置声明
template<class T>
class Test
{
public:
friend ostream& operator << <> (ostream& out, const Test<T>& obj); // 模板类友元定义,注意格式"<>"
Test(T n=0):num(n){}
Test(const Test<T>& copy)
{
num = copy.num;
}
private:
T num;
};
template<class T>
ostream& operator << (ostream& out, const Test<T>& obj)
{
out<<obj.num<<endl;
return out;
}
int main()
{
Test<int> t(2);
cout<<t;
return 0;
}
// 第二种格式
/*
#include <iostream>
using namespace std;
template<class T>
class Test
{
public:
template<class S> // 注意<class S>S
friend ostream& operator << (ostream& out, const Test<S>& obj);
Test(T n=0):num(n) {}
Test(const Test<T>& copy)
{
num = copy.num;
}
private:
T num;
};
// 注意<class T>和<class S>都行
template<class T>
ostream& operator << (ostream& out, const Test<T>& obj)
{
out<<obj.num<<endl;
return out;
}
int main()
{
Test<int> t(2);
cout<<t;
return 0;
}
using namespace std;
template <class T>
class Test; // 模板类前置声明
template<class T>
ostream& operator << (ostream& out, const Test<T>& obj); // 模板类友元前置声明
template<class T>
class Test
{
public:
friend ostream& operator << <> (ostream& out, const Test<T>& obj); // 模板类友元定义,注意格式"<>"
Test(T n=0):num(n){}
Test(const Test<T>& copy)
{
num = copy.num;
}
private:
T num;
};
template<class T>
ostream& operator << (ostream& out, const Test<T>& obj)
{
out<<obj.num<<endl;
return out;
}
int main()
{
Test<int> t(2);
cout<<t;
return 0;
}
// 第二种格式
/*
#include <iostream>
using namespace std;
template<class T>
class Test
{
public:
template<class S> // 注意<class S>S
friend ostream& operator << (ostream& out, const Test<S>& obj);
Test(T n=0):num(n) {}
Test(const Test<T>& copy)
{
num = copy.num;
}
private:
T num;
};
// 注意<class T>和<class S>都行
template<class T>
ostream& operator << (ostream& out, const Test<T>& obj)
{
out<<obj.num<<endl;
return out;
}
int main()
{
Test<int> t(2);
cout<<t;
return 0;
}
相关文章推荐
- 模板类的友元重载,用C++代码实现
- 模板类的友元重载(<>)
- 模板类的友元重载
- C++中模板类的友元重载
- 友元与重载
- C++中模板类使用友元模板函数
- 模板类友元的定义和用法。
- 在VC6里把偏特化后的模板类(或者整个模板类族)声明为另一个类的友元的方法
- 【语法回顾】:C++中的:模板类,友元函数,符号重载
- C++_模板类的友元运算符重载_原理
- 通过友元实现输入输出的重载
- 模板类和友元的总结和实例验证
- 模板类的 友元模板函数
- 模板类和友元
- 友元模板类使用
- c++中重载操作符表,可以帮助重载哪些操作符,以及到底是重载为类方法还是类的友元方法
- 关于友元,重载的使用说明
- 模板类和友元的总结和实例验证
- 友元与运算符重载
- C++中模板类使用友元模板函数