Bazetwo isn't splitting hairs. The point is that assignment calls operator=() and initialization calls a constructor. It would make a difference in something like this:
1 2 3 4 5 6 7 8 9
class C {
C(constchar *cp) { do_something_fast(); ]
C() { do_something_slow(); }
C& operator=(const C& src) { do something_slow(); }
}
C c1("this is fast");
C c2;
c2 = "this is slow";