When you say that you have had “enough ice cream” what you mean is that you have had sufficient ice cream, you don’t want any more for the time being. Even though you like the stuff, you do not intend to eat any more even if it were offered to you.
*I have had enough grammar for today. *I think she has had enough practice for today.
“Enough of” carries with it a negative connotation. When you have had “enough of” something you have had an excess of it. In other words, you have had too much of it, and as a result you are fed up of it. If you were to say that you have had enough of ice cream, what it suggests is that you are sick of eating ice cream.
*I have had enough of grammar. *I have had enough of Ganguly and his antics.