Ma compréhension de base est qu'il n'y a pas d'implémentation pour une fonction virtuelle pure, cependant, on m'a dit qu'il pourrait y avoir une implémentation pour une fonction virtuelle pure. class A { public: virtual void f() = 0; }; void A::f() { cout<<"Test"<<endl; } Le code ci-dessus est-il OK? …
Est-ce mal d'écrire: class A { public: virtual ~A() = 0; }; pour une classe de base abstraite? Au moins cela compile dans MSVC ... Est-ce que ça plantera au moment de l'exécution?
Je comprends la nécessité d'un destructeur virtuel. Mais pourquoi avons-nous besoin d'un pur destructeur virtuel? Dans l'un des articles C ++, l'auteur a mentionné que nous utilisons un destructeur virtuel pur lorsque nous voulons créer un résumé de classe. Mais nous pouvons créer une classe abstraite en faisant de l'une …
Nous déclarons toujours une fonction virtuelle pure comme: virtual void fun () = 0 ; C'est-à-dire qu'il est toujours attribué à 0. Ce que je comprends, c'est qu'il s'agit d'initialiser l'entrée vtable pour cette fonction à NULL et que toute autre valeur ici entraîne une erreur de compilation. Cette compréhension …
Je remarque parfois des programmes qui plantent sur mon ordinateur avec l'erreur: "appel de fonction virtuelle pure". Comment ces programmes se compilent-ils même lorsqu'un objet ne peut pas être créé à partir d'une classe abstraite?
We use cookies and other tracking technologies to improve your browsing experience on our website,
to show you personalized content and targeted ads, to analyze our website traffic,
and to understand where our visitors are coming from.
By continuing, you consent to our use of cookies and other tracking technologies and
affirm you're at least 16 years old or have consent from a parent or guardian.