1. //でコメント導入を示し、行末までがコメントになります。

 var = 42; // comment

2. /*と*/で囲むと、複数行コメントになります。

 /*comment*/
 aaaコメントでない
 /*comment
  comment
  comment
  */

3. コメントの入れ子については
C++言語では基本的に前から見ていくので、最初に出現したコメントが優先されます。
(//を無条件で優先するというようなことはありません。)

従って
 /* foo // bar */
 foobar */
は最初の/*を見た瞬間から*/が出現しない限り全て無視する(コメント扱いする)こととなります。
よってC++言語では//を見ても何とも思わずコメント扱いを続け、
その後最初に */を見た瞬間にコメント扱いを終了します。
よって foobar までコメントになるのでははなく、
/* foo // bar */だけがコメントとなりfoobar */の部分はコメントでないことにとなります。

4. 文字列リテラルの扱い
C++言語では "" で挟まれた物を文字列として扱います。
"コメントでない"//comment

5. コメントと文字列の入れ子について
C++言語では3.と同様に、最初に出現したものを優先します。