如何调用此构造函数?

时间:2011-11-08 05:02:18

标签: c++ inheritance constructor

班级CameraPerspAsym扩展CameraPersp并拥有此构造函数:

CameraPerspAsym( int pixelWidth, int pixelHeight, float fov, float nearPlane, float farPlane ) 
: CameraPersp(pixelWidth, pixelHeight, fov, nearPlane, farPlane),
mLensShiftX(0.0f),
mLensShiftY(0.0f){};

(我把它放在4行以便于阅读)

AFAIK似乎将params ( int pixelWidth, int pixelHeight etc ... )传递给基类。但是mLensShiftX(0.0f)

呢?

那我应该如何调用这个构造函数呢?

2 个答案:

答案 0 :(得分:1)

您只需要担心为子类的构造函数提供参数,在本例中为int pixelWidth, int pixelHeight, float fov, float nearPlane, float farPlane。它如何将这些参数传递给它的父级,或者使用它们来初始化它的成员,是一个实现细节并且对你隐藏。

mLensShiftX(0.0f), mLensShiftY(0.0f)是使用值0.0f显式初始化两个实例变量的类,当使用类CameraPerspAsym来允许这种情况发生时,您不需要做任何事情,你也不能指定替代值。在构造函数运行后,您必须使用类公开的接口来更改这些值。

答案 1 :(得分:1)

调用它就像你会调用任何构造函数一样。使用实际参数,其类型与形式参数的类型匹配,或者可以自由转换为形式参数的类型。

mLensShiftXmLensShiftY显然默认为浮点0.0;因此我假设您可以通过对象上的某些方法来改变这些值。