Il semble que le débogueur Visual Studio (j'ai vérifié VS 2015 et VS 2017) ignore les constructeurs et les opérateurs d'affectation dans la classe de base. Si je crée un nouveau projet d'application console Win32 C++ avec le code suivantLe débogueur VS ignore les cteurs dans la classe de base
#include <iostream>
struct B
{
B() { std::cout << "ctor"; }
};
struct S : B { };
int main()
{
S s1;
return 0;
}
Je ne peux pas entrer dans B :: B(), « cteur » est imprimé et le débogueur va à la « return 0; » ligne. Dans le démontage du « appel S :: S (01713D4h) » est suivi d'un morceau de code qui est pas attribué à une source (« Source non disponible »):
00E51DF0 push ebp
00E51DF1 mov ebp,esp
00E51DF3 sub esp,0CCh
00E51DF9 push ebx
00E51DFA push esi
00E51DFB push edi
00E51DFC push ecx
00E51DFD lea edi,[ebp-0CCh]
00E51E03 mov ecx,33h
00E51E08 mov eax,0CCCCCCCCh
00E51E0D rep stos dword ptr es:[edi]
00E51E0F pop ecx
00E51E10 mov dword ptr [this],ecx
00E51E13 mov ecx,dword ptr [this]
00E51E16 call B::B (0E51389h)
Comment puis-je entrer dans B: : B() (sans utiliser un point d'arrêt)?
J'ai reçu l'avertissement par courriel du site de développement de la communauté, et vous pouvez également ajouter votre commentaire et discuter de ce problème ici :) –