Index: src/wp-includes/comment-template.php
===================================================================
--- src/wp-includes/comment-template.php	(revision 34452)
+++ src/wp-includes/comment-template.php	(working copy)
@@ -435,6 +435,11 @@
 
 	$comment = get_comment($comment_id);
 
+	// Verify if comment is a WP_Comment object.
+	if ( ! $comment instanceof WP_Comment ) {
+		return array();
+	}
+
 	$classes = array();
 
 	// Get the comment type (comment, trackback),
Index: tests/phpunit/tests/comment/template.php
===================================================================
--- tests/phpunit/tests/comment/template.php	(revision 34452)
+++ tests/phpunit/tests/comment/template.php	(working copy)
@@ -30,4 +30,29 @@
 		$this->assertEquals( 12, get_comments_number() );
 	}
 
-}
\ No newline at end of file
+	/**
+	 * @ticket 33947
+	 */
+	public function test_get_comment_class_with_comment_id() {
+		$post_id    = $this->factory->post->create();
+		$comment_id = $this->factory->comment->create( array( 'comment_post_ID' => $post_id ) );
+
+		$classes1 = get_comment_class( array( 'test' ), $comment_id );
+		$this->assertContains( 'test', $classes1 );
+		$this->assertContains( 'comment', $classes1 );
+
+		$classes2 = get_comment_class( 'test', $comment_id );
+		$this->assertContains( 'test', $classes2 );
+		$this->assertContains( 'comment', $classes2 );
+
+		$obj_comment = get_comment( $comment_id );
+		$classes3    = get_comment_class( 'test', $obj_comment );
+		$this->assertContains( 'test', $classes3 );
+		$this->assertContains( 'comment', $classes3 );
+
+		wp_delete_comment( $comment_id, true );
+
+		$classes4 = get_comment_class( 'test', $comment_id );
+		$this->assertEquals( array(), $classes4 );
+	}
+}
