0

Case 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);
}

Case 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);
}

case 1 : a->m(t) (in main) calls B::m(T) (overriding)
case 2 : a->m(t) (in main) calls A::m(T) (overloading)

Why does T& vs const T& is a type mismatch but T vs const T is not?

Andrea N.
  • 9
  • 1

0 Answers0