回顾一些JUCE示例代码,我遇到了这个函数调用:
Arpeggiator()
{
addParameter (speed = new AudioParameterFloat ("speed", "Arpeggiator Speed", 0.0, 1.0, 0.5));
}
这只是函数调用中的赋值吗?或者是否还有其他类型的c ++魔法?
答案 0 :(得分:6)
这只是函数调用中的赋值吗?
是
或者还有其他类型的c ++魔法吗?
那里没有多少 magic ,赋值操作的返回值通常是对指定实例的引用。
所以它等同于(我怀疑是构造函数代码):
class Arpeggiator : public Decorator {
public:
Arpeggiator() {
speed = new AudioParameterFloat ("speed", "Arpeggiator Speed", 0.0, 1.0, 0.5);
addParameter (speed); // Probably inherited from Decorator
}
private:
AudioParameterFloat* speed;
};
作为question came up,如果有重载的赋值运算符会发生什么。
正如规范answer中的Operator overloading所述:
分配操作员
关于作业还有很多话要说。但是,其中大部分已在GMan's famous Copy-And-Swap FAQ中说过,所以我在这里跳过大部分内容,只列出完美的赋值运算符以供参考:
X& X::operator=(X rhs) { swap(rhs); return *this; }