情况1:
class T{};
class A {
public:
virtual void m(T t) { ... }
};
class B : public A {
public:
void m(const T t){ ... }
};
int main(){
T t;
B b;
A* a = &b;
a->m(t);
}
案例二:
class T{};
class A {
public:
virtual void m(T& t) { ... }
};
class B : public A {
public:
void m(const T& t){ ... }
};
int main(){
T t;
B b;
A* a = &b;
a->m(t);
}
案例 1:a->m(t)(主要)调用 B::m(T)(覆盖)
案例 2:a->m(t)(主要)调用 A::m(T)(重载)
为什么T& vs const T&是类型不匹配但T vs const T不是?