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!