基类 子类 虚函数 函数名雷同,参数不同, 这是什么关系
基类 子类 虚函数 函数名相同,参数不同, 这是什么关系?
类似下面的代码:子类中的 Func 函数,和基类中的 Func 函数是什么关系?
------解决思路----------------------
派生类中一旦复写基类中的同名函数,那么基类中的同名函数即被隐藏。
------解决思路----------------------
一点关系都没有
由于CDeriver 派生于CBase
所以相当于
class CDeriver
{
virtual BOOL Func(int, int);
virtual BOOL Func(char *, int, unsigned);
};
建议你去看看 重载,重写,覆盖这些概念及异同
------解决思路----------------------
因为参数不同,所以两个Func只是简单的函数重载关系,即同名不同参数的两个函数。根据你传递的参数决定调用哪个,当然,基类对象是不可能调到子类的Func的。
------解决思路----------------------
他们两个是没有关系,在CDriver中的函数会覆盖父类的同名函数。就像你在全局域中定义个变量,你的局部域同名变量会覆盖它一样。
类似下面的代码:子类中的 Func 函数,和基类中的 Func 函数是什么关系?
class CBase
{
virtual BOOL Func(int, int);
};
class CDeriver : public CBase
{
virtual BOOL Func(char *, int, unsigned);
};
------解决思路----------------------
派生类中一旦复写基类中的同名函数,那么基类中的同名函数即被隐藏。
------解决思路----------------------
一点关系都没有
由于CDeriver 派生于CBase
所以相当于
class CDeriver
{
virtual BOOL Func(int, int);
virtual BOOL Func(char *, int, unsigned);
};
建议你去看看 重载,重写,覆盖这些概念及异同
------解决思路----------------------
因为参数不同,所以两个Func只是简单的函数重载关系,即同名不同参数的两个函数。根据你传递的参数决定调用哪个,当然,基类对象是不可能调到子类的Func的。
------解决思路----------------------
他们两个是没有关系,在CDriver中的函数会覆盖父类的同名函数。就像你在全局域中定义个变量,你的局部域同名变量会覆盖它一样。