Question: I can operate class+class (for example I can do date+date), but can anyone explain how can I do class+class+class please? C++ does not let me define an operator with 2 parameters.

Answer: 
That's because there is no such operator in general.  

`a + b + c` is `(a + b) + c`. First `a + b`, then the results
of that added to `c`.

EDIT:

If the objects in question are extremely big, so that creating
the temporaries in an expression like `a + b + c` is too
expensive, you can google for template expressions; the basic
idea is that `operator+` doesn't do anything but return an
expression node, which can be evaluated later, as part of the
full expression.
You are allowed to use arithmetic operators with two parameters. For example:

```
//References are used here as arguments.
Cents operator+(const Cents &c1, const Cents &c2)
{
    // use the Cents constructor and operator+(int, int)
    return Cents(c1.m_nCents + c2.m_nCents);
}

```

(Source: <http://www.learncpp.com/cpp-tutorial/92-overloading-the-arithmetic-operators/>)

Note: you need to declare the operator "function" as *friend* in class definition if you need to use private members of your class in it.

If you then return a class type same with those given as arguments (objects or references of them as here), you can do class + class + class..., assuming that each operator+ call is between 2 arguments, and the result is added to the third one invoking again the operator+ "function" etc.