日期:2014-05-18  浏览次数:20787 次

解释一下代码
class   t
{
    int   a;
int   b;

}

public   class   a:b
{
      public   a(t   x,t   y   ):base(x.a,x.b)
    {


    }


}
这是什么意思?

------解决方案--------------------
public a(t x,t y ):base(x.a,x.b)


a(t x,t y )表示类a的构造函数,base(x.a,x.b)表示在执行a的构造函数的时候同时调用基类(就是class b)的构造函数

------解决方案--------------------
楼上说的对
------解决方案--------------------
是问 base 吧

在构造函数后加 : base() 就是调用基类的构造函数。实例化类时,先调用基类的构造函数,然后调用派生类的构造函数。必须调用基类的构造函数,有些时候没有这种调用也能编译,是因为编译器帮我们调用了基类的默认构造函数,就是无参的那个。
------解决方案--------------------
tomjohn123() ( ) 信誉:100 2007-09-10 10:16:54 得分: 0


不这么写不也同样要调用基类的构造函数吗?


--------------------
如果不用base(x.a,x.b),他就只能调用默认构造函数,也就是不能带参数
具体的代码含义,1楼解决的很清楚了



------解决方案--------------------
public a(t x,t y ):base(x.a,x.b)

等同于

public a(t x,t y ){
base(x.a,x.b);
}
------解决方案--------------------
它表示一个构造器链

public a(t x,t y ):base(x.a,x.b){
}

public a(t x,t y ){
base(x.a,x.b);
}
在执行过程上有所不同,在这里a(t x,t y ) 为一个初始化器,只读属性的初始化只能在a()
中初始化.
------解决方案--------------------
调用基类的构造函数!
public a(t x,t y ):this()
{
...
}
public a()
{
}
这样是调用自己的无参函数,一般用于初始化类,而带参构造函数用于实现特定的功能!
调用基类的构造函数如你代码中所示,我楼上的也是!