class base{....}
class car:base{....}
main{
car bus = new car();
car wagon = bus;
base base1 = bus;
}
wagon = bus 后 wagon, bus都是同一个实例吗?
base1 = bus是怎么传递的?base1和bus是储存在不同的堆上吗???

解决方案 »

  1.   

    wagon = bus 后 wagon, bus都是同一个实例吗?
    base1 = bus是怎么传递的?base1和bus是储存在不同的堆上吗???
    答案都是 肯定的;
    wagon bus base1 都是变量名而已,,存放在堆中..
    new car(); 他们都指向 这个实例 base1 应该是指向了 一部分;
      

  2.   

     首先你要理解 什么是内存。
      我们写代码,声名变量,变量的位置就在内存当中。
         
             Car a= ccc;
             Car b=a;则  b在内存中没有位置。只是将a在内存中的引用传给了a
      

  3.   

    这种涉及多态的机制问题,推荐LZ看http://blog.csdn.net/haoel/article/details/1948051也许能帮到您什么忙。
      

  4.   


    第一个问题,wagon,bus是同一个实例,当wagon变化时,bus会跟着变化
    第二个问题,据我所知这种写法是会出错的,因为不是同一个类型(尽管是继承),不能直接相等
      

  5.   

    base1 ,bus 如果是同一个实例,请解释一下;
    在base、car类中有一个隐藏函数(都有同一个函数,但派生的函数用new定义),base1 调的为base的函数,但bus调的却是car的函数????????????????
      

  6.   

    自己在顶一下
    using System;
    namespace Wrox.ProCSharp.Basics1
    {
    class abs
    {
    class base_c
    {
    public void f()
    { Console.WriteLine("调用了基类BaseClass的非虚方法"); }
    }

    class car : base_c
    {
    new  public void f()
    { Console.WriteLine("调用了派生类InClass的非虚方法"); }
    }
    static void Main()
    {
    car InObj = new car();
    base_c BaseObj = InObj;
    BaseObj.f();
    InObj.f();
    Console.ReadLine();
    }
    }
    }
    如果是同一实例? 怎么结果不一样!!!!!!!!!!!
      

  7.   

    自己在顶一下
    using System;
    namespace Wrox.ProCSharp.Basics1
    {
    class abs
    {
    class base_c
    {
    public void f()
    { Console.WriteLine("调用了基类BaseClass的非虚方法"); }
    }

    class car : base_c
    {
    new  public void f()
    { Console.WriteLine("调用了派生类InClass的非虚方法"); }
    }
    static void Main()
    {
    car InObj = new car();
    base_c BaseObj = InObj;
    BaseObj.f();
    InObj.f();
    Console.ReadLine();
    }
    }
    }
    如果是同一实例? 怎么结果不一样!!!!!!!!!!!