一个声明中多个函数的原型

Prototype for Multiple functions in one declaration

本文关键字:函数 原型 声明 一个      更新时间:2023-10-16

快速新手问题:如何阅读下面的代码块(它来自教科书基于物理的渲染第 12.1 节)?这是我以前从未见过的。它是类 Light 的三个不同函数的原型(即 Light::nSamples、Light::LightToWorld 和 Light::WorldToLight)?

(Light Interface) ≡                                                                                  606
Light(const Transform &l2w, int ns = 1)
    : nSamples(max(1, ns)), LightToWorld(l2w),
       WorldToLight(Inverse(l2w)) {
     (Warn if light has transformation with scale)
}

你有一堆混合了 c++ 语法的伪代码。

(Light Interface) ≡

这没有任何意义,可能是评论。你甚至有一些Unicode字符。

其余的看起来像是class Light构造函数的错误定义

Light(const Transform &l2w, int ns = 1)

这将是带有参数的构造函数,它有一个错误,因为它应该Light::Light(const Transform &l2w, int ns = 1)

    : nSamples(max(1, ns)), LightToWorld(l2w),
       WorldToLight(Inverse(l2w))

这是成员变量和基类的实例化。

{
     (Warn if light has transformation with scale)
}

这将是构造函数代码,而不是另一个奇怪的伪代码注释。

您以前从未见过它有一个很好的理由。这是无稽之谈:

(Light Interface) =

其余的,如果写了

Light::Light(const Transform & l2w, int ns - 1)
...

将是构造函数的定义。

我不熟悉这本书的来源,但我怀疑这种非正式性实际上会有所帮助。