понимание конструктора и оператора копирования

По моему мнению, в случае использования оператора копирования 1, вывод должен быть 0 68 но это 0 87 и в случае 2 это 87 87 что хорошо

#include <iostream>
using namespace std;
class numbered
{
static int un;
public:
int a;
numbered (): a(un) {un++;}
numbered(const numbered & n) : a(87){}
numbered & operator=(const numbered) { a=68; return *this; }
};

int numbered::un=0;

void f(numbered  s){ cout<<s.a;}

int main()
{
numbered a, b=a;
cout << a.a << b.a;   //case 1
f(a);f(b);        //case 2
return 0;
}

-1

Решение

Работает правильно.

Чтобы получить ожидаемый результат:

numbered a, b;
b = a;
5

Другие решения

это

numbered a, b=a;

Также можно написать так:

numbered a, b(a);

Это определение нескольких объектов в строке. b здесь создается, так что называется копия c’tor.

5