C ++等于登录函数调用?

时间:2016-06-02 16:51:08

标签: c++

回顾一些JUCE示例代码,我遇到了这个函数调用:

Arpeggiator()
{
    addParameter (speed = new AudioParameterFloat ("speed", "Arpeggiator Speed", 0.0, 1.0, 0.5));
}

这只是函数调用中的赋值吗?或者是否还有其他类型的c ++魔法?

1 个答案:

答案 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;
}