Dab tsi yog qhov txawv ntawm kev ua haujlwm virtual thiab kev ua haujlwm dhau?
Dab tsi yog qhov txawv ntawm kev ua haujlwm virtual thiab kev ua haujlwm dhau?

Video: Dab tsi yog qhov txawv ntawm kev ua haujlwm virtual thiab kev ua haujlwm dhau?

Video: Dab tsi yog qhov txawv ntawm kev ua haujlwm virtual thiab kev ua haujlwm dhau?
Video: Ntujtawg yog dab tsi ? 2024, Kaum ib hlis
Anonim

Cov haujlwm virtual tsis tuaj yeem zoo li qub thiab tsis tuaj yeem ua phooj ywg muaj nuj nqi ntawm lwm chav kawm. Lawv yeej ib txwm txhais nyob rau hauv lub hauv paus chav kawm ntawv thiab hla dhau hauv chav kawm derived. Nws tsis yog yuav tsum tau rau cov chav kawm muab los rau override (los yog rov txhais lub virtual muaj nuj nqi ), nyob rau hauv cov ntaub ntawv no base class version ntawm muaj nuj nqi yog siv.

Tsis tas li ntawd, qhov txawv ntawm kev ua haujlwm virtual thiab kev ua haujlwm dawb huv yog dab tsi?

Lub ntsiab qhov sib txawv ntawm ' virtual function' thiab 'ntshiab virtual muaj nuj nqi ' yog ' virtual muaj nuj nqi ' muaj nws txhais hauv cov chav kawm hauv paus thiab cov chav kawm qub txeeg qub teg tau rov txhais nws. Cov ntshiab virtual muaj nuj nqi tsis muaj kev txhais hauv cov chav kawm hauv paus, thiab tag nrho cov chav kawm tau txais txiaj ntsig tau txais yuav tsum rov txhais nws.

Tom qab ntawd, lo lus nug yog, dab tsi yog kev ua haujlwm dhau ntawm C ++? C++ Function Overriding . Yog derived class txhais tib yam muaj nuj nqi raws li txhais nyob rau hauv nws cov chav kawm hauv paus, nws yog hu ua muaj nuj nqi overriding hauv C++. Nws yog siv los ua kom tiav runtime polymorphism. Nws tso cai rau koj los muab cov kev siv tshwj xeeb ntawm cov muaj nuj nqi uas twb tau muab los ntawm nws cov chav kawm hauv paus.

Ib yam li ntawd, tib neeg nug, vim li cas peb thiaj siv cov haujlwm virtual?

Virtual Functions yog siv los txhawb "Khiav sijhawm Polymorphism". Thaum lub virtual muaj nuj nqi yog hu los ntawm kev siv Base Class Pointer, lub Compiler txiav txim siab ntawm Runtime uas version ntawm tus muaj nuj nqi i.e. Base Class version lossis overridden Derived Class version yuav tsum raug hu. Qhov no hu ua Runtime Polymorphism.

Koj puas tuaj yeem hla qhov tsis muaj nuj nqi virtual hauv C ++?

Hauv c++, txhua tus tswv cuab hauv chav kawm muaj nuj nqi yog tsis yog - virtual los ntawm lub neej ntawd. Lawv ua tau ua virtual los ntawm kev siv lub virtual keyword hauv muaj nuj nqi kos npe. Raws li tau hais los saum toj no yog tus muaj nuj nqi ntawm chav kawm hauv paus yog ua virtual ces cov muaj nuj nqi ntawm Derived lossis Child class's muaj nuj nqi nrog tib lub npe tuaj yeem hla dhau cov chav kawm Base muaj nuj nqi.

Pom zoo: