0

情况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不是?

4

0 回答 0