构造函数初始化表的使用规则

王朝vc·作者佚名  2006-01-09
宽屏版  字体: |||超大  

class A

{

A(int x);//A的构造函数

};

class B

{

B(int x, int y);//B的构造函数

};

B::B(int x, int y)

:A(x) //在初始化表里调用A的构造函数

{

}

上述为:

(1)如果类存在继承关系,派生类必须在其初始化表里调用基类的构造函数。

(2)类的const常量只能在初始化表里被初始化,因为它不能在函数体内用赋值的方式来初始化。

class A

{

A(int size);

const int SIZE;

};

A::A(int size)

:SIZE(size)

{

}

(3)类的数据成员的初始化可以采用初始化表或函数体内赋值两种方法,这两种方法的效率不完全相同。

非内部函数数据类型的成员应当采用第一种方式初始化,以获取更高的效率。

class A

{

A(void);//无参数构造函数

A(const A &other);//拷贝构造函数

A & operator = (const A &otherf)//赋值函数

};

class B

{

public:

B(const A &a);//B的构造函数

private:

A m_a;//成员对象

};

B::B(const A &a)

:m_a(a)

{

}

对于内部数据类型的数据成员而言,两种初始化方式的效率几乎没有区别,但后者的版式更清楚。

class F

{

public:

F(int x, int y);//构造函数

private:

int m_x;

int m_y;

};

F::F(int x, int y)

{

m_x = 0;

m_y = 0;

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有