Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
public override void Foo(int i)
{
Console.WriteLine("Derived.Foo(int)");
}Если закомментировать метод Foo(Integer&) в классе Derived, то в С++ будет вызван Derived::Foo(Object&) (т.е. более подходящий метод базового класса не будет рассматриваться в качестве кандидата)
class Derived : public Base
{
using Base::Foo;
...
};
class Program
{
static void Main(string[] args)
{
TextNode d = new TextNode();
d.Foo(d);
Node node = new TextNode();
node.Foo(node);
}
}
class Node
{
public virtual void Foo(Node node)
{
Console.WriteLine("Node.Foo(Node)");
}
}
class TextNode : Node
{
public override void Foo(Node node)
{
Console.WriteLine("TextNode.Foo(Node)");
}
public void Foo(TextNode textNode)
{
Console.WriteLine("TextNode.Foo(TextNode)");
}
}
TextNode.Foo(TextNode)
TextNode.Foo(Node)
TextNode.Foo(Node)struct base
{
void foo(int);
};
struct derived : base
{
// using base::foo; // раскомментить для перегрузки с foo(int)
void foo(double);
};
Перегрузка и наследование