2013-03-28 213 views
3

我有一個基類和派生類。基類有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

回答

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

使用初始化器列表構造對於B

class B : A 
{ 
    public B() : A(42) 
    { 
     Console.WriteLine("I AM DERIVED class"); 
    } 
}; 
1
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)"); 
    } 
} 
3

B構造是這樣的:

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

注:我已經改變了問題標記爲C#作爲你給出的代碼是C#,而不是C++。

+0

它被稱爲**成員初始值列表** – Sam 2013-03-28 09:55:32

相關問題