我读过的(在我们的例子_c1
)初始化继承成员,而不是内源性的构造函数:初始化基类构造函数中的继承成员如何减少对...的调用?
class A
{
public int _c;
}
class B:A
{
public B(int c)
{
_c = c;
}
}
我们应该对它们进行初始化基类的构造函数内,因为这样的话,我们减少继承成员的电话(_c
):
class A
{
public A(int c)
{
_c = c;
}
public int _c;
}
class B:A
{
public B(int c)
: base(c)
{
}
}
如果_c
字段基构造内部初始化,初始化的顺序如下:
1)首先衍生B
类的字段初始被称为
2)然后基类A
的字段初始化被称为(此时_c
的值被设为0
)
3)B’s
构造函数被调用,这又呼叫A’s
定制构造
4)_c
字段获取设置为一旦A’s
定制构造函数返回一个参数c
(内侧A’s
定制构造的值)
5),B’s
构造函数执行它的代码。
如果_c
字段内B's
构造初始化,初始化的顺序如下:
1)首先领域派生B
类的初始化被称为
2)然后,基类A
的字段初始化被称为(此时_c
的值被设为0
)
3)B’s
构造函数被调用,后者又调用A’s
默认的构造
4)一旦A’s
定制协nstructor回报,B’s
构造函数设置_c
场参数c
的价值至于我可以告诉大家,在这两种情况下被_c
调用两次,所以我们是如何准确地减少对继承成员_c
电话?
感谢名单
当你有几个派生类时会发生什么?派生类的派生类? – Oded 2010-06-17 19:47:50
我不确定我是否理解您要说的内容 – flockofcode 2010-06-17 22:22:10