Junior — Middle
Kas notiek, kad tiek pieprasīta funkcija, kas ir deklarēta kā tīri virtuāla, un kā tas ietekmē programmas izpildi?
sobes.tech AI
Atbilde no AI
C++ valodā tīra virtuāla funkcija ir funkcija, kas deklarēta ar = 0 bāzes klasē, piemēram:
class Base {
public:
virtual void foo() = 0; // tīra virtuāla funkcija
};
Tā nav realizēta bāzes klasē un prasa, lai to pārdefinētu atvasinātās klases.
Ja kļūdas dēļ tieši izsauc tīru virtuālo funkciju (piemēram, izmantojot rādītāju vai atsauci uz bāzes klases objektu, kam nav realizācijas), programmas uzvedība ir nenoteikta. Parasti tiek izsaukta funkcija __cxa_pure_virtual, un programma netīšām tiek pārtraukta.
Tādēļ tīra virtuāla funkcija kalpo, lai izveidotu abstraktas klases un saskarnes, un tās izsaukšana bez realizācijas noved pie izpildes laikā notiekošas kļūdas.