继承体系中的Class Constructors写法及初始化列表的作用
在继承体系中,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的排序,以确保程序的正确性。
以上就是电脑114游戏给大家带来的关于继承体系中的Class Constructors写法及初始化列表的作用全部内容,更多攻略请关注电脑114游戏。
电脑114游戏-好玩游戏攻略集合版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!