戻り値構造体/クラス最適化くらいは知ってるよな?

#include <iostream>
using namespace std;

class A {
public:
A() { cout << "A()" << endl; }
A(const A&) { cout << "A(): copy" << endl; }
A(const char* name) { cout << "A(" << name << ")" << endl; }
A operator*(const A&) { A a("*"); return a; }
};

int main() {
A a("a"), b("b");
A c = a * b;
}

結果
A(a)
A(b)
A(*)