Oui c'est la même chose. En C++, une méthode abstraite est juste une autre façon de décrire les caractéristiques d'une fonction virtuelle pure. Les deux signifient simplement une méthode sans implémentation fournie qui doit être implémentée dans une sous-classe avant que la classe puisse être réellement instanciée.
La situation des fonctions virtuelles pures et des classes abstraites en C++ est similaire, car elles signifient exactement la même chose. Toute classe abstraite doit avoir au moins une fonction virtuelle pure, sinon elle pourrait être instanciée et ne serait pas abstraite. De même, toute classe possédant au moins une fonction virtuelle pure doit être abstraite car elle doit être étendue pour que la méthode puisse être implémentée.
Par conséquent, une classe est abstraite si et seulement si il contient au moins une fonction virtuelle pure ou une méthode abstraite.
Plus tard, des langages comme Java et C# ont rendu ce genre de choses plus explicites, en autorisant un mot clé spécial pour définir une classe abstraite plutôt que la présence d'une fonction purement virtuelle. Le C++ vous permet de faire les mêmes choses que ces langages, mais ils sont juste un peu plus explicites à ce sujet. :D