Additionally,
$ f=-x
$ cat "$f"
cat: invalid option -- 'x'
$ cat -- "$f"
cat: -x: No such file or directory
# ^-- correct, but:
$ f=-
$ cat -- "$f"
reading stdin...
reading stdin...
^C
$ f=./-
$ cat -- "$f"
cat: ./-: No such file or directory
...better to glob with ./* than *