案例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);
}
案例2:
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)(在main中)调用A :: m(T)(重载)
为什么 T& vs const T& 是类型不匹配但 T vs const T 不是?