来吧!让我给您们解释一下为什么《为什么只能友元,而[]只能成员重载;
简而言之:1.对于友元重载没有this指针指向当前对象的!这个可以从单目运算符重载时返回形参而不能返回this可知!所以必须为参数一+运算符+参数二出现的表达式才能用友元!2,。二元运算符的成员函数重载,或一元运算符成员函数重载,默认在符号前有个this指针,指向当前对象的!这也就为什么,二元重载还需有一参,一元重载不用参!好了~~~这就很好解释,若《采用成员函数重载,那么this指针指向的是cout!这是错误的~~~this无法实例;其次[]采用友元,那就没有第二参数了~~~
简而言之:1.对于友元重载没有this指针指向当前对象的!这个可以从单目运算符重载时返回形参而不能返回this可知!所以必须为参数一+运算符+参数二出现的表达式才能用友元!2,。二元运算符的成员函数重载,或一元运算符成员函数重载,默认在符号前有个this指针,指向当前对象的!这也就为什么,二元重载还需有一参,一元重载不用参!好了~~~这就很好解释,若《采用成员函数重载,那么this指针指向的是cout!这是错误的~~~this无法实例;其次[]采用友元,那就没有第二参数了~~~
2017-05-13
#include <iostream>
using namespace std;
template<typename T>
void swapNum(T &a,T &b)
{
T temp = a;
a = b;
b = temp;
}
int main(void)
{
int x = 10;
int y = 20;
swapNum<int>(x,y);
cout << "x = " << x << endl;
cout << "y = " << y << endl;
return 0;
}
using namespace std;
template<typename T>
void swapNum(T &a,T &b)
{
T temp = a;
a = b;
b = temp;
}
int main(void)
{
int x = 10;
int y = 20;
swapNum<int>(x,y);
cout << "x = " << x << endl;
cout << "y = " << y << endl;
return 0;
}