class A
    {
         
        public A(string fffff)
        {
            
        }    }    class B : A
    {
        public B(string f,string k):base(f)        {
             
        }
    }如果不加base就出错了。为什么子类不能建立自己的构造函数?

解决方案 »

  1.   

    class A
        {
           
            public A(string fffff)
            {
               
            }    }    class B : A
        {
           
            public B(string fffff)
            {
               
            }
            public B(string f,string k)
            {
               
            }
        } 
    就可以了!!
      

  2.   

    失误  是class A
        {
         
            public A
            {
             
            }
         
            public A(string fffff)
            {
             
            }    }    class B : A
        {
            public B(string f,string k)
            {
             
            }
        }
      

  3.   

    在声明一个子类对象时,会在调用子类构造函数前先调用基类默认构造函数。你例子中,基类A重载了构造函数,所以系统默认的构造函数就是A(string)而不是A(),在子类中如果不显示调用A(string),系统也会自动调用它,但是它需要一个String参数,不显示调用就会报错。而在A中加入一个A(){} ,那A的默认构造函数就是A(),在声明B的对象时,调用的基类构造函数就是A(),就不会报错了
      

  4.   

    你的标题有问题,构造函数是不能继承的
    根本不是构造函数继承的问题原因是你重写了构造函数后,默认的无参构造就不存在了
    在继承父类的时候不写Base就会调用无参的构造函数,这时必须手动写一个父类无参的构造函数
      

  5.   

    吃饭出了 哈哈~class B : A
    {
      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)
      

  6.   

    在正常情况下,一般子类的构造函数是调用基类的默认构造函数(无参构造函数),但我们可以使用base关键字来决定具体调用基类的哪个构造函数
      

  7.   


    子类不能建立独立的构造函数,必需调用它的其类的构造函数。
    上面的例子中虽然没写基类的构造函数,其实它调用了基类的public A()构造函数,你调试一下就知道了。C++语法:如果基类构造函数没有参数的话,可以不写。只是为了给咱们写代码方便。