1.概要
1.泛型的赋值运算符怎么写
A operator=(const A& a)
A<T> operator=(const A<T>& a)
那个是正确的呢?
结果:都可以,但是不能重复
2.代码
#include <iostream>
using namespace std;
class B {
public:
B operator=(const B& b) {
cout << "Assignment operator B\n";
return *this;
}
};
namespace T1 {
void test() {
B a;
B b;
a = b;
}
}
namespace T2 {
template<class T>
class A {
public:
int a;
//赋值运行符是否需要T:用没问题
A<T> operator=(const A<T>& a) {
cout << "Assignment operator A<T>\n";
return *this;
}
};
void test() {
A<B> a;
A<B> b;
a = b;
}
}
namespace T3 {
template<class T>
class A {
public:
int a;
//赋值运行符是否需要T:不用也没问题
A operator=(const A& a) {
cout << "Assignment operator A\n";
return *this;
}
};
void test() {
A<B> a;
A<B> b;
a = b;
}
}
namespace T4 {
class C {
public:
//判断右值是否必须是常量
C operator=(C& b) {
cout << "Assignment operator C\n";
return *this;
}
};
void test() {
C a;
C b;
a = b;
}
}
int main()
{
T1::test();
T2::test();
T3::test();
T4::test();
cout << "Hello World!\n";
}
3.运行结果
Assignment operator B
Assignment operator A<T>
Assignment operator A
Assignment operator C
Hello World!