在 C# 和 C++ 中,是否可以同时调用具有相同签名的方法的基版本和派生版本,而不是覆盖基类版本?
问问题
341 次
2 回答
5
在 C# 中,如果派生方法是覆盖,则不是,但如果它被标记为new
. 但是,在使用此构造时必须小心,因为在大多数情况下,这并不是您的对象的消费者所期望的。
static class Program
{
static void Main()
{
Base baseObject = new Derived();
Derived derivedObject = new Derived();
Console.Write(derivedObject.Test());
Console.Write(baseObject.Test());
Console.Write(((Base)derivedObject).Test());
}
}
class Base
{
public virtual int Test()
{
return 1;
}
}
class Derived : Base
{
public new int Test()
{
return 2;
}
}
于 2013-01-23T23:52:58.467 回答
3
对于 C++,您可以使用范围解析运算符:
Derived d;
d.Base::Method();
于 2013-01-23T23:50:01.217 回答