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

Reply via email to