当前位置:  开发笔记 > 编程语言 > 正文

什么是这个C++函数声明

如何解决《什么是这个C++函数声明》经验,为你挑选了1个好方法。

我是C++的新手,我在docs上工作的东西告诉我只看它没有解释任何东西,所以我试图破译它.

我来了一个函数的声明,但我不完全理解它.

只是第一个功能

我得到的部分是我没有得到的是在MHWRender :: MPxShaderOverride(obj)之后然后它作为参数列表开始(或者它叫做我不知道的)

我猜我会在哪里找到指定的输入.

再一次,我不知道这是做什么,所以我有点迷失在如何解释它.

完整代码可以在这里找到:http: //help.autodesk.com/view/MAYAUL/2016/ENU/?guid = _cpp_ref_hw_phong_shader_2hw_phong_shader_8cpp_example_html

    hwPhongShaderOverride(const MObject& obj)
: MHWRender::MPxShaderOverride(obj)
, fShaderNode(NULL)
, fTextureData(NULL)
, fDrawUsingShader(true) // Disabling this will use fixed-function which only has an OpenGL implementation
, fShaderBound(false)
, fTexture(NULL)
, fInColorPass(false)
, fColorShaderInstance(NULL)
, fInShadowPass(false)
, fShadowShaderInstance(NULL)
, fTransparency(0.0f)
{
    // Create a shader instance to use for drawing
    //
    if (fDrawUsingShader)
    {
        createShaderInstance();
    }
    fAmbient[0] = fAmbient[1] = fAmbient[2] = 0.0f;
    fDiffuse[0] = fDiffuse[1] = fDiffuse[2] = fDiffuse[3] = 0.0f;
    fSpecular[0] = fSpecular[1] = fSpecular[2] = 0.0f;
    fShininess[0] = fShininess[1] = fShininess[2] = 500.0f;
}

// override blend state when there is blending
static const MHWRender::MBlendState *sBlendState;

// Current hwPhongShader node associated with the shader override.
// Updated during doDG() time.
hwPhongShader *fShaderNode;
// Shader inputs values including transparency
float fTransparency;
float fAmbient[3];
float fDiffuse[4];
float fSpecular[3];
float fShininess[3];

// Temporary system buffer for creating textures
unsigned char* fTextureData;

// Pass tracking
bool fInColorPass;
bool fInShadowPass;

// Draw with texture or shader flag
bool fDrawUsingShader;
// VP2 texture
MHWRender::MTexture *fTexture;
// VP2 color shader
MHWRender::MShaderInstance *fColorShaderInstance;
// VP2 shadow shader
MHWRender::MShaderInstance *fShadowShaderInstance;
mutable bool fShaderBound;

Remy Lebeau.. 6

这是一个类构造函数.该类被命名hwPhongShaderOverrideMObject,它源自MHWRender::MPxShaderOverride,例如:

class hwPhongShaderOverrideMObject : public MHWRender::MPxShaderOverride
{
    ...
};

hwPhongShaderOverride(const MObject& obj)指定此构造函数将一个参数作为输入,一个对MObject实例的const引用.构造函数是在类声明本身内部声明和实现的,而不是与其声明分开实现.C++允许这两种方法.

介于两者之间的:,并{初始化列表的构造函数.它初始化了班级成员.

: 开始初始化列表.

MHWRender::MPxShaderOverride(obj)将输入对象传递给基类构造函数.必须始终首先构造基类.

, fShaderNode(NULL)正在将fShaderNode成员初始化为NULL.

, fTextureData(NULL)正在将fTextureData成员初始化为NULL.

依此类推,直到{达到结束初始化列表.然后,在首先初始化类成员之后,像任何其他函数一样输入构造函数的主体.



1> Remy Lebeau..:

这是一个类构造函数.该类被命名hwPhongShaderOverrideMObject,它源自MHWRender::MPxShaderOverride,例如:

class hwPhongShaderOverrideMObject : public MHWRender::MPxShaderOverride
{
    ...
};

hwPhongShaderOverride(const MObject& obj)指定此构造函数将一个参数作为输入,一个对MObject实例的const引用.构造函数是在类声明本身内部声明和实现的,而不是与其声明分开实现.C++允许这两种方法.

介于两者之间的:,并{初始化列表的构造函数.它初始化了班级成员.

: 开始初始化列表.

MHWRender::MPxShaderOverride(obj)将输入对象传递给基类构造函数.必须始终首先构造基类.

, fShaderNode(NULL)正在将fShaderNode成员初始化为NULL.

, fTextureData(NULL)正在将fTextureData成员初始化为NULL.

依此类推,直到{达到结束初始化列表.然后,在首先初始化类成员之后,像任何其他函数一样输入构造函数的主体.

推荐阅读
我我檬檬我我186
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有