コード例 #1
0
    public void TestVirtualFuntionRetVal()
    {
        // Virtual Functions Object Slicing case
        // See http://stackoverflow.com/questions/3479712/virtual-functions-object-slicing
        using (var baseVirtual = BaseClassVirtual.Base)
        {
            TestVirtualFunction(baseVirtual, 5);
        }

        BaseClassVirtual baseClass = new DerivedClassVirtual();

        TestVirtualFunction(baseClass, 10);
        baseClass.Dispose();

        using (var basePtr = BaseClassVirtual.BasePtr)
        {
            TestVirtualFunction(basePtr, 10);
        }

        using (var managed = new ManagedDerivedClassVirtual())
        {
            TestVirtualFunction(managed, 15);

            baseClass = managed;
            TestVirtualFunction(baseClass, 15);
        }

        using (var retBase = new ManagedDerivedClassVirtualRetBase())
        {
            TestVirtualFunction(retBase, 10);
        }
    }