class A
{
public A(string fffff)
{
} } class B : A
{
public B(string f,string k):base(f) {
}
}如果不加base就出错了。为什么子类不能建立自己的构造函数?
{
public A(string fffff)
{
} } class B : A
{
public B(string f,string k):base(f) {
}
}如果不加base就出错了。为什么子类不能建立自己的构造函数?
{
public A(string fffff)
{
} } class B : A
{
public B(string fffff)
{
}
public B(string f,string k)
{
}
}
就可以了!!
{
public A
{
}
public A(string fffff)
{
} } class B : A
{
public B(string f,string k)
{
}
}
根本不是构造函数继承的问题原因是你重写了构造函数后,默认的无参构造就不存在了
在继承父类的时候不写Base就会调用无参的构造函数,这时必须手动写一个父类无参的构造函数
{
public B(string f,string k)
{
}
}
B b = new ("", "");//这里按如下方式执行找的B的基类A,public B(string f,string k)默认为——public B(string f,string k) : base A()
由于A不存在A()这种零参数的构造方法所以出错(由于public A(string fffff) 的存在,A()被屏蔽了)如果A()存在的话,则找到A的基类object,object()构造方法由于object不存在基类,所以开始构造object()-->A()-->B(string f,string k)
子类不能建立独立的构造函数,必需调用它的其类的构造函数。
上面的例子中虽然没写基类的构造函数,其实它调用了基类的public A()构造函数,你调试一下就知道了。C++语法:如果基类构造函数没有参数的话,可以不写。只是为了给咱们写代码方便。