为什么C++经常要对派生类对象做基类引用?为什么不直接做派生类对象引用?

2025-02-05 20:05:41
推荐回答(2个)
回答1:

直接这样用的情况实际上比较少,而比较常见的是用在函数中,例如:
void myFunc(Brass &lhs){}

这里使用基类引用的好处就是为了多样性,因为这样既可以用基类对象作为参数,又可以用派生类对象作为参数:
myFunc(dom);
myFunc(dot);

如果直接用派生类对象引用就没用这种好处了。

回答2:

因为若有一个函数f(),它要对Brass类及其子类进行处理。这时,只需将其形参设为f(Brass &)即可,反之,若不这样做,你地重载2个f(Brass &); f(BrassPlus &);才能对该类及其派生类进行处理。显然第一种方案,大大简化了设计。