我定义了一个类,如果构造函数为空,那么可以有继承函数
如果构造函数有参数,那么就不能有继承函数。
为什么啊?
错误在哪里?
运行提示 不能什么0个参数的重载。

解决方案 »

  1.   

    楼主是这样写的代码吧public class cls1
    {
      public cls1 (int i, string s)
      {
      }
    }public class cls2 : cls1
    {
      public cls2 ()
      {
      }
    }
    由于cls1书写了cls1(int i,string s)构造函数,所以cls1()构造函数就被隐藏了;故,cls2()构造函数找不到可以继承的函数了。
    解决方案:在cls1中,显式的声明cls1()构造函数
    代码如下:public class cls1
    {
      public cls1()
      {
      }  public cls1 (int i, string s)
      {
      }
    }public class cls2 : cls1
    {
      public cls2 ()
      {
      }
    }
      

  2.   

    如果你看过effective c++ 你就知道
    定一个了一个空类的时候,编译器其实为你默认实现了好多了函数
    其中就包括了默认构造函数(无参)和默认的浅拷贝的实现
    但是你显示定义了一个带参构造函数的话,就需要自己再定一个无参构造函数
      

  3.   

    引用修改下2楼的代码public class cls1
    {
      public cls1()
      {
      }  public cls1 (int i, string s)
      {
      }
    }public class cls2 : cls1
    {
      public cls2 () : base()  //在这里我添加一个"base()"调用父类无参数构造函数,这样对用构造函数的调用顺序看的应该清楚点吧
      {
      }
    }
      

  4.   

    public class Class1
    {
    static void Main(string[] args)
    {
    B b = new B(2, 3);
    }
    }public class A
    {
    public A()
    {
                代码...
    } public A(int a)
    {
                代码...
    }
    }public class B : A
    {
    public B(int a, int b) : base(a)
    {
                代码...
    }
    }这样也是可以的,主要看你想继承父类的哪个构造函数
      

  5.   


    但是没想到必须要提供不带参数的构造函数No, a default constructor is NOT a must.class A
    {
      public A(int i){}
    }class B : A
    {
      public B() : base(0)            //<---
      {
      }
    }
      

  6.   

    那这样写可以吗?public class cls1
    {
      public cls1()
      {
      }  public cls1 (int i, string s)
      {
      }
    }public class cls2 : cls1
    {
      public cls2()
      {
      }
      public cls2 (int i,int j,int k)
      {
      }
    }
    ////////////////////////////////////
    cls1 myclass1=new cls1(110,"报警");
    cls2 myclass2=new cls2(110,119,"火警");
      

  7.   

    可以这样写,不过cls2 myclass2=new cls2(110,119,"火警")这句错了,cls2中第三个参数为int型!