如题。
1.运算符重载后,作用范围有多大。是不是由它的返回类型和参数决定??
例如:我在一个复数类中重载了基础的四则运算的运算符。然后,在main函数里面,对于复数,四则运算就以我重载的为主。
2.函数模板和类模板的创建地点
eg:我要创建一个类模板,是不是直接先创建一个类,然后再类的名字上面加一行template<typename T1>之类的,就可以作为一个类模板的创建方式了。
3.要用函数模板重载四则运算符,怎么用?类型不确定,怎么在main函数中使用?
综上:其实是老师布置的一个作业,要求
“设计一个能实例化后能处理所有基本数据类型四则运算的类模板,要求利用操作符重载来实现四则运算。及不能用函数调用形式,而应该用“+-*/”形式来执行加减乘除运算。”
下面附上自己的问题代码:
template<typename T1, typename T2>
class counter
{
public:
counter();
virtual ~counter();
public:
friend T1 operator+(T1 a, T2 b);
friend T1 operator-(T1 a, T2 b);
friend T1 operator*(T1 a, T2 b);
friend T1 operator/(T1 a, T2 b);
};
template<typename T1, typename T2>
T1 operator+(T1 a, T2 b)
{
return a+b;
}
template<typename T1, typename T2>
T1 operator-(T1 a, T2 b)
{
return a-b;
}
template<typename T1, typename T2>
T1 operator*(T1 a, T2 b)
{
return a*b;
}
template<typename T1, typename T2>
T1 operator/(T1 a, T2 b)
{
return a/b;
}
全部顶格了········
1.运算符重载后,作用范围有多大。是不是由它的返回类型和参数决定??
例如:我在一个复数类中重载了基础的四则运算的运算符。然后,在main函数里面,对于复数,四则运算就以我重载的为主。
2.函数模板和类模板的创建地点
eg:我要创建一个类模板,是不是直接先创建一个类,然后再类的名字上面加一行template<typename T1>之类的,就可以作为一个类模板的创建方式了。
3.要用函数模板重载四则运算符,怎么用?类型不确定,怎么在main函数中使用?
综上:其实是老师布置的一个作业,要求
“设计一个能实例化后能处理所有基本数据类型四则运算的类模板,要求利用操作符重载来实现四则运算。及不能用函数调用形式,而应该用“+-*/”形式来执行加减乘除运算。”
下面附上自己的问题代码:
template<typename T1, typename T2>
class counter
{
public:
counter();
virtual ~counter();
public:
friend T1 operator+(T1 a, T2 b);
friend T1 operator-(T1 a, T2 b);
friend T1 operator*(T1 a, T2 b);
friend T1 operator/(T1 a, T2 b);
};
template<typename T1, typename T2>
T1 operator+(T1 a, T2 b)
{
return a+b;
}
template<typename T1, typename T2>
T1 operator-(T1 a, T2 b)
{
return a-b;
}
template<typename T1, typename T2>
T1 operator*(T1 a, T2 b)
{
return a*b;
}
template<typename T1, typename T2>
T1 operator/(T1 a, T2 b)
{
return a/b;
}
全部顶格了········