Hàm ảo

Trong lập trình hướng đối tượng, trong các ngôn ngữ như C++, hàm ảo (virtual function) hay phương thức ảo (virtual method) là một hàm hay phương thức có thể thừa kế và ghi đè được để tạo điều kiện cho điều phối động. Khái niệm này là một phần quan trọng của phần đa hình (thời gian chạy) của lập trình hướng đối tượng (OOP).

Mục đích

Khái niệm hàm ảo giúp giải quyết các vấn đề sau:

Trong lập trình hướng đối tượng, khi một lớp kế thừa từ lớp cơ sở, một đối tượng của lớp thừa kế đó có thể được tham chiếu đến thông qua một con trỏ hay tham chiếu của kiểu lớp cha thay vì kiểu của lớp thừa kế đó. Nếu có phương thức nào của lớp cơ sở bị ghi đè bởi lớp thừa kế, phương thức thực sự được gọi bằng một tham chiếu hay con trỏ có thể được liên kết 'sớm' (bởi trình biên dịch) theo như kiểu định nghĩa của con trỏ hay tham chiếu, hay 'trễ' (ví dụ như bởi hệ thống thời gian chạy của ngôn ngữ) theo như kiểu thực sự của đối tượng được tham chiếu tới.

Hàm ảo giải quyết trường hợp 'trễ'. Nếu hàm được gọi là 'ảo' trong lớp cơ sở, sự hiện thực của hàm trong lớp thừa kế nhiều nhất được gọi tùy theo kiểu thực sự mà đối tượng đó tham chiếu tới, bất kể kiểu khai báo của con trỏ hay tham chiếu. Nếu đó không phải là 'ảo', phương thức sẽ được giải quyết 'sớm' và hàm gọi được chọn tùy theo kiểu khai báo của con trỏ hay tham chiếu.

Hàm ảo cho phép chương trình gọi tới những phương thức không nhất thiết phải tồn tại vào thời điểm biên dịch mã.

Trong C++, phương thức ảo được khai báo bằng cách thêm từ khóa virtual vào khai báo của hàm trong lớp cơ sở. Chỉ định này được kế thừa bởi tất cả các hiện thực của phương thức đó trong các lớp thừa kế, nghĩa là chúng có thể tiếp tục ghi đè lên nhau và liên kết trễ (late-bound). Và ngay cả khi phương thức của lớp cơ sở gọi tới phương thức ảo, chúng sẽ gọi các phương thức thừa kế.

Ví dụ

Class Diagram của lớp Animal

Ví dụ, một lớp nền Animal có một hàm ảo eat. Lớp con Llama sẽ hiện thực eat() khác với lớp con Wolf, nhưng chúng ta có thể gọi eat() trên bất cứ thực thể nào của lớp Animal, và có được hành vi eat() của lớp con cụ thể.

class Animal { public: void /*non-virtual*/ move(void) { std::cout << "This animal moves in some way" << std::endl; } virtual void eat(void) = 0; }; // The class "Animal" may possess a definition for eat() if desired. class Llama: public Animal { public: // The non virtual function move() is inherited but not overridden void eat(void) override { std::cout << "Llamas eat grass!" << std::endl; } };

Xem thêm

Tham khảo

Read other articles:

Sheikh Saeed Al Maktoum House dengan menara angin di Al Shindagha. Saeed Al Maktoum House merupakan sebuah bangunan bersejarah dan bekas kediaman Saeed bin Maktoum Al Maktoum, bekas pemimipin Dubai di Uni Emirat Arab. Bangunan ini terletak di tepi Dubai Creek di wilayah pemukiman Al Shindagha. Didirikan sekitar 1894 sebagai kediaman keluarga Al Maktoum. Bangunan ini sekarang menjadi museum yang berisi artefak dan gambar kota tua Dubai.[1] Catatan kaki ^ HOUSE OF SHEIKH SAEED AL-MAKTOO...

 

Peta region Bačka Bačka (Kiril Serbia dan Rusyn: Бачка, Hungaria: Bácska, Latin Serbia dan Kroasia: Bačka, Slowak: Báčka) adalah wilayah di Panonia yang terbentang antara sungai Donau dan Tisa. Wilayah ini terbagi antara Serbia dan Hungaria. Wilayah ini membentuk daerah Vojvodina di Serbia. Novi Sad, ibu kota Vojvodina, berdiri di perbatasan antara Bačka dan Syrmia. Bagian utara Bačka yang lebih kecil kini terletak di Bács-Kiskun di Hungaria. Pranala luar Totoist Atrocities in V...

 

Children's television series This article has multiple issues. Please help improve it or discuss these issues on the talk page. (Learn how and when to remove these template messages) This article contains content that is written like an advertisement. Please help improve it by removing promotional content and inappropriate external links, and by adding encyclopedic content written from a neutral point of view. (May 2015) (Learn how and when to remove this template message) This article needs ...

Major League Baseball season Major League Baseball team season 1974 Atlanta BravesLeagueNational LeagueDivisionWestBallparkAtlanta StadiumCityAtlantaRecord88–74 (.543)Divisional place3rdOwnersWilliam BartholomayGeneral managersEddie RobinsonManagersEddie Mathews, Clyde KingTelevisionWTCGRadioWSB(Ernie Johnson, Milo Hamilton) ← 1973 Seasons 1975 → The 1974 Atlanta Braves season was the ninth season in Atlanta along with the 104th season as a franchise overall. The ...

 

Men's international cricket team This article is about the men's team. For the women's team, see New Zealand women's national cricket team. Black Caps redirects here. For other uses, see Blackcaps. This article needs additional citations for verification. Please help improve this article by adding citations to reliable sources. Unsourced material may be challenged and removed.Find sources: New Zealand national cricket team – news · newspapers · books · schol...

 

Questa voce sugli argomenti allenatori di pallacanestro statunitensi e cestisti statunitensi è solo un abbozzo. Contribuisci a migliorarla secondo le convenzioni di Wikipedia. Segui i suggerimenti dei progetti di riferimento 1, 2. Rick Adelman Adelman con la maglia dei Portland Trail Blazers Nazionalità  Stati Uniti Altezza 185 cm Peso 79 kg Pallacanestro Ruolo AllenatorePlaymaker Termine carriera 1975 - giocatore2014 - allenatore[1] Hall of fame Naismith Hall of Fame...

Arirang TVDiluncurkan3 Februari 1997; 27 tahun lalu (1997-02-03)PemilikKorea International Broadcasting FoundationSloganThe World On ArirangNegaraKorea SelatanBahasaInggris, Tionghoa, Spanyol, Arab, Rusia, Vietnam, IndonesiaKantor pusatSeoul, Korea SelatanSitus webwww.arirang.co.kr Untuk penggunaan lain, lihat Arirang Arirang TV (Korea: 아리랑 TV) adalah stasiun televisi internasional berbahasa Inggris yang berlokasi di Seoul, Korea Selatan. Arirang TV dioperasikan oleh Lembaga Penyia...

 

Pour les articles homonymes, voir Vaughan. Si ce bandeau n'est plus pertinent, retirez-le. Cliquez ici pour en savoir plus. Certaines informations figurant dans cet article ou cette section devraient être mieux reliées aux sources mentionnées dans les sections « Bibliographie », « Sources » ou « Liens externes » (novembre 2018). Vous pouvez améliorer la vérifiabilité en associant ces informations à des références à l'aide d'appels de notes. Brian...

 

Pour les articles homonymes, voir Robert III. Robert III de Flandre Vue d'artiste de Robert III de Flandre, XIXe siècle, chapelle des Comtes à Courtrai. Titre Comte de Flandre 7 mars 1305 – 17 septembre 1322(17 ans, 6 mois et 10 jours) Prédécesseur Gui de Dampierre Successeur Louis Ier de Flandre Biographie Dynastie Maison de Dampierre Nom de naissance Robert de DampierreRobert de Béthune Date de naissance 1249 Date de décès 17 septembre 1322 ...

Japanese crewed research submersible History  JapanJapan NameShinkai 2000 BuilderMitsubishi Heavy Industries Kobe Shipyard Cost3.7billion (Japanese yen) Laid down1978 Launched1981 Sponsored byJAMSTEC Completed1981 Acquired1981 Commissioned1981 Decommissioned2004 Maiden voyage1983 In service1983 Out of service2002 HomeportYokosuka StatusPreserved at Shin Enoshima aquarium General characteristics TypeDeep-submergence vehicle Length9.3 m (31 ft) Beam2.9 m (9.5 ft) Draft3...

 

هذه المقالة تحتاج للمزيد من الوصلات للمقالات الأخرى للمساعدة في ترابط مقالات الموسوعة. فضلًا ساعد في تحسين هذه المقالة بإضافة وصلات إلى المقالات المتعلقة بها الموجودة في النص الحالي. (يوليو 2023) قرى الأطفال إس أو إسالتاريخالتأسيس 1949 المؤسس هيرمان غمينر الجوائز  Conrad N. Hilton...

 

His Excellency The Honorable Luc FriedenFrieden pada 2024 Perdana Menteri Luksemburg ke-25PetahanaMulai menjabat 17 November 2023Penguasa monarkiHenriWakilXavier BettelPendahuluXavier BettelPenggantiPetahanaPresiden Partai Rakyat Kristen SosialPetahanaMulai menjabat 16 Maret 2024PendahuluElisabeth MarguePenggantiPetahanaMenteri KeuanganMasa jabatan23 Juli 2009 – 4 Desember 2013Perdana MenteriJean-Claude JunckerPendahuluJean-Claude JunckerPenggantiPierre GramegnaMenteri Pert...

Radio station in El Paso, Texas KTSM-FMEl Paso, TexasUnited StatesBroadcast areaEl Paso metropolitan areaFrequency99.9 MHz (HD Radio)BrandingSunny 99.9ProgrammingFormatAdult contemporarySubchannelsHD2: Beatles and Friends (oldies)AffiliationsPremiere NetworksOwnershipOwneriHeartMedia, Inc.(iHM Licenses, LLC)Sister stationsKHEY (AM), KHEY-FM, KPRR, KTSMHistoryFirst air dateJune 18, 1962; 61 years ago (1962-06-18)Call sign meaningTri-State Media (original owner)Technical infor...

 

Square in Kathmandu, Nepal This article needs additional citations for verification. Please help improve this article by adding citations to reliable sources. Unsourced material may be challenged and removed.Find sources: Kathmandu Durbar Square – news · newspapers · books · scholar · JSTOR (December 2017) (Learn how and when to remove this message) Kathmandu Durbar SquareNative name Newar: Ye LāyekūKathmandu Durbar SquareLocationKathmandu,  ...

 

San Piatone Sacerdote e martire  NascitaBenevento MorteTournai, 286 Venerato daChiesa cattolica Santuario principaleChiesa di San Piatone a Tournai Ricorrenza1º ottobre Attributifronte tagliata Patrono diTournai, Seclin Manuale Piatone di Tournai, anche detto Piaton, Piat, Piato (Benevento, ... – Tournai, 286), è stato un cristiano martirizzato nel III secolo a Tournai, oggi in Belgio. È venerato come santo dalla Chiesa cattolica. Agiografia e culto Piatone nacque a Benevento n...

Military navigation system Typical US Air Force TACAN site using a dB Systems Model 900E TACAN Antenna A tactical air navigation system, commonly referred to by the acronym TACAN, is a navigation system used by military aircraft. It provides the user with bearing and distance (slant-range or hypotenuse) to a ground or ship-borne station. It is from an end-user perspective a more accurate version of the VOR/DME system that provides bearing and range information for civil aviation. The DME port...

 

Den här artikeln behöver fler eller bättre källhänvisningar för att kunna verifieras. (2023-03) Åtgärda genom att lägga till pålitliga källor (gärna som fotnoter). Uppgifter utan källhänvisning kan ifrågasättas och tas bort utan att det behöver diskuteras på diskussionssidan. En exekutiv producent eller verkställande producent är en överordnad producent inom nöjes-, medie- och kulturindustrin. Speciellt vanlig är befattningen vid filminspelningar och spelutveckling, me...

 

American fashion designer Todd OldhamOldham for The 1 Second Film in January 2005BornJacky Todd OldhamCorpus Christi, Texas, U.S. Todd Oldham (born Jacky Todd Oldham;[1]) is an American-born designer and president of L-7 Designs Inc and Todd Oldham Studios. His approach to fashion and style has become known to millions through his fashion lines, interior designs, books and by appearing in television shows. Oldham is based in New York City.[2] Biography Early life Oldham was bo...

Pour les articles homonymes, voir Stadium municipal et Domenech. Stade Amédée DomenechGénéralitésNoms précédents Stadium - Parc municipal Des sportsSurnom StadiumAdresse 116 Avenue du 11 novembre 191819100 Brive-la-GaillardeConstruction et ouvertureOuverture 25 septembre 1921Rénovation 1970, 1989, 1997, 2011, 2019UtilisationClubs résidents Club athlétique BrivistePropriétaire Ville de Brive-la-GaillardeÉquipementSurface pelouse hybrideCapacité 14 759[1]LocalisationCoordonn�...

 

Disambiguazione – Se stai cercando la pratica conviviale, vedi Simposio o Banchetto. Disambiguazione – Se stai cercando il dialogo platonico, vedi Convivio (dialogo). Questa voce o sezione sull'argomento saggistica non cita le fonti necessarie o quelle presenti sono insufficienti. Puoi migliorare questa voce aggiungendo citazioni da fonti attendibili secondo le linee guida sull'uso delle fonti. Segui i suggerimenti del progetto di riferimento. Il convivioTitolo originaleConvivio...