1.请问大家C#中 2个对象在什么样的情况下可以互相赋值 2.对象的关系:比如2个对象是父子的关系   或者      兄弟类关系. 3.2个对象中有指针数据类型,可以互相赋值吗?(个人感觉如果2个对象有都含有指针类型,好象不能够互赋值) 3.如果满足互相赋值的情况下: 
 疑问:兄弟类互相赋值 特别难理解其中的 
       都是重载或者覆盖父类的函数  
       这些函数怎么对接起来 转换 
       被转换后的类到底调用哪个函数 
4.当子类向父亲类转换时 
  疑问1:   会丢失数据吗? 
  疑问2:   如果父类有虚函数,是怎样转换的。 
恳求的大家帮助,先谢谢了!!! 

解决方案 »

  1.   

    个人理解……
    1、“相互赋值”的话,只怕是类型完全相同的对象了吧
    2、父子关系就是被继承和继承的关系,“兄弟关系”应该是拥有共同父类的对象吧
    3、指针?不懂……
    3、俩3……貌似“兄弟对象”不能相互赋值……
    4、父类不能访问子类的成员,算不算“丢失数据”?
    父类的虚方法如果被子类重写(override)了,将会调用子类的方法(虚方法在父类和子类的方法表中的偏移量是相同的)
    父类的虚方法如果被子类阻断(new)了,将会调用父类的方法(new了一个新方法,放到了子类虚方法的pg后面)        class A
            {
                public virtual void Method()
                {
                    MessageBox.Show("1");
                }
            }        class b : A
            {
                public override void Method()
                {
                    MessageBox.Show("2");
                }        }        class c : A
            {
                public new void Method()
                {
                    MessageBox.Show("3");
                }
            }        private void button1_Click(object sender, EventArgs e)
            {
                b b = new b();
                c c = new c();
                A a = b;
                A d = c;
                a.Method();//2
                d.Method();//1
            }