日期:2014-05-20  浏览次数:20709 次

讨论有关面向对象中继承的问题
讨论:
public   class   test1
{  
        private   int   a;
        public   int   b;
        public   test1()
        {
                  a=1;
                  b=2;
        }
       
}
public   class   test2:test1
{
      public   test2()
      {
              b=3
      }
}
当你
test1   mytest1=new   test1();
test2   mytest2=new   test2();
问,当系统为test1和test2实例化的时候
这两个对象所分配的内存空间大小相同么?

有人做c++么?
改成c++代码,用sizeof试试。c#里面在安全模式下不能使用sizeof函数。  

请热心人给个结果出来

------解决方案--------------------
那做测试看看



------解决方案--------------------
不一样
------解决方案--------------------
明显不一样,成员数量都不一样……
------解决方案--------------------
不一样,你在test2中可以调用base,test1里没有

个人观点,哈哈
------解决方案--------------------
个人认为不一样
理由是实例化test2的时候还需要执行test1的构造方法
------解决方案--------------------
个人认为,因为class2中没有a,所以比一个class1占的内存还少~~~
------解决方案--------------------
学习一下哈哈

------解决方案--------------------
up
------解决方案--------------------
显然不一样。
而且c#和c++的实现机制是完全不一样的
------解决方案--------------------
其实关键是如何理解private的继承

子类是继承父类private成员的
只是子类不能使用父类的private成员而已
------解决方案--------------------
up