Il a le exact même effet sur une classe comme il le fait sur une structure, affectant l'alignement des membres de données.
En fait, l'utiliser sur une classe est très inhabituel et presque toujours une erreur. La disposition d'un objet de classe C++ est fortement définie par l'implémentation. Un compilateur C++ s'efforce généralement d'optimiser cette mise en page, en supprimant le pointeur de la table v lorsqu'il le peut. Et potentiellement en ajouter un lorsque la classe utilise l'héritage multiple. Ainsi, une modification mineure de la déclaration de classe, comme la création d'une méthode virtuelle ou l'ajout d'une classe de base peut modifier considérablement la disposition de l'objet. Cela va bien sûr casser le code qui dépend de ce pragma. Comme un objet sérialisé à un fichier binaire ne sera plus désérialisé correctement. En général une mauvaise pratique aussi mais arrive tout le temps quand même. Ne l'utilisez pas.