如何从派生类的实例调用基类非默认构造函数?

如何从派生类的实例调用基类非默认构造函数?

问题描述:

我有一个基类和派生类。基类有2个构造函数,如下所示。如何从派生类的实例调用基类非默认构造函数?

class A 
{ 
    public A() 
    { 
     Console.WriteLine("I AM BASE class"); 
    } 

    public A(int x) 
    { 
     Console.WriteLine("base : parameter 1"); 
    } 
} 

class B : A 
{ 
    public B() 
    { 
     Console.WriteLine("I AM DERIVED class"); 
    } 
} 

class Program 
{ 
    static void Main(string[] args) 
    { 
     B b = new B(); 
     Console.ReadKey(); 
    } 
} 

输出为我是基类I AM派生类 我的要求是,当B是instantiaded,那么基类的构造函数参数化应该得到调用,而不是默认的构造函数。 请让我知道如何做到这一点?

+0

您可以将基本关键字添加到默认构造函数。 – 2013-03-28 09:45:35

+0

然后在这种情况下使用构造函数初始值设定项列表。 – 2013-03-28 09:47:29

+1

代码的问题是C#,而不是C++ – Sean 2013-03-28 09:49:05

public B() 
    { 
     Console.WriteLine("I AM DERIVED class"); 
    } 
    public B(int x): base(x) 
    { 
     Console.WriteLine("I AM DERIVED class (with a parameter)"); 
    } 

使用初始化器列表构造对于B

class B : A 
{ 
    public B() : A(42) 
    { 
     Console.WriteLine("I AM DERIVED class"); 
    } 
}; 

class B : A 
{ 
    public B() 
    { 
     Console.WriteLine("I AM DERIVED class"); 
    } 
    public B(int x) 
    : A(x) 
    { 
     Console.WriteLine("I AM DERIVED class (with a parameter)"); 
    } 
} 

B构造是这样的:

public B() : base(1) 
{ 
    Console.WriteLine("I AM DERIVED class"); 
} 

注:我已经改变了问题标记为C#作为你给出的代码是C#,而不是C++。

+0

它被称为**成员初始值列表** – Sam 2013-03-28 09:55:32