如何从派生类的实例调用基类非默认构造函数?
问题描述:
我有一个基类和派生类。基类有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,那么基类的构造函数参数化应该得到调用,而不是默认的构造函数。 请让我知道如何做到这一点?
答
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
您可以将基本关键字添加到默认构造函数。 – 2013-03-28 09:45:35
然后在这种情况下使用构造函数初始值设定项列表。 – 2013-03-28 09:47:29
代码的问题是C#,而不是C++ – Sean 2013-03-28 09:49:05