继承体系中的Class Constructors写法及初始化列表的作用

2024-05-17 16:50 网游攻略 投稿:运河边百科网

在继承体系中,class的constructors写法需要注意,特别是在使用initialization list时。initialization list是在constructor声明之后,使用冒号符号后跟着函数调用动作的一种语法结构。它的作用是在进入constructor主体动作之前,先唤起其中所列的函数。例如:

第5行表示:在执行CPoint::CPoint(x)之前,先执行_x(x);

第17行表示:执行CPoint2d::CPoint2d(x,y)之前,先执行CPoint(x)和_y(y).

第28行表示:执行CPoint3d::CPoint3d(x,y,z)之前,先执行CPoint2d(x,y)和_z(z).

因此,当产生一个CPoint3d object时,会有以上六个动作依序被调用。在继承体系中,由内而外,由上而下的建构方式,然而initialization list的出现却有其必要性。若不使用initialization list,编译器会无法确定应该调用哪一个constructor,从而导致编译错误。

这种initialization list会在编译器底层产生影响,编译器会以“适当的次序”将initialization list中指定的member调用动作安插到constructor之内,并置于任何user code之前。

在类的设计中,也要注意成员声明动作是以members在class中的声明次序为根据,而不是以initializtion list中的排序为根据。因此,需要特别留意两者的顺序,以避免程序设计时的一些困扰或失误。

因此,设计class时,需要注意成员声明次序和initialization list的排序,以确保程序的正确性。

声明:运河边百科网所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流。若您的权利被侵害,请联系站长删除。
加载中...