As main()there are two objects, so the destructor will be called two times only because of them. One object is in f(), so the destructor will be called one only because of it. Only 3 times (what do you expect, but read on ...)
, f. , RVO . RVO - , , , . RVO.
, ; , 3 .