Thanks to FxCop, I've just discovered quite a fundamental difference between
C++ and C#.
Check out the following code.
class Base
{
public Base( )
{
Method( ) ;
}
public virtual void Method( )
{
Console.Write("I'm the Base");
}
}
class Derived
: Base
{
public Derived( )
{
Method( ) ;
}
public override void Method()
{
Console.WriteLine("I'm the Derived");
}
}
Constructing a Derived object means a call is made to Base's constructor
which calls Method; not Base's method (as in C++), but Derived's Method. At
this point, Derive is only partially constructed.
When I stumbled over this in C++, I was surprised that the base constructor
didn't call the derived method. I soon changed my mind when it was
explained to me that C++ is implemented this way as unexpected results could
happen by called Derived's virtual method.
Would anyone like to comment? Personally, I feel C++ is correct in this
instance.
Cheers,
Steve