C# と C++ の両方で、基本クラスのバージョンをオーバーライドする代わりに、メソッドの基本バージョンと派生バージョンの両方を同じシグネチャで呼び出すことはできますか?
2 に答える
5
C# では、派生メソッドがオーバーライドの場合ではなく、 としてマークされている場合は yes です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 に答える