解释一下代码
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()
{
}
这样是调用自己的无参函数,一般用于初始化类,而带参构造函数用于实现特定的功能!
调用基类的构造函数如你代码中所示,我楼上的也是!