✨Hàm ảo

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 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ụ

thumb|right|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; } };

👁️ 2 | 🔗 | 💖 | ✨ | 🌍 | ⌚
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 đè
thumb|Quân hàm Lục quân thumb|Phù hiệu (Hạ sĩ quan và binh sĩ) **_Quân đội Đức_** (Heer), là Lục quân Đức và là một phần lực lượng _Wehrmacht_ rộng lớn hơn, thực sự đã kế thừa
**Cuộc vây hãm Olmütz** là một trận bao vây trong cuộc Chiến tranh Bảy Năm, diễn ra khi vị vua - chiến binh nước Phổ là Friedrich II Đại Đế xuất chinh đánh xứ Mähren
thumb|[[Nhà thờ Capuchin, Viên|Nhà thờ Capuchin ở Vienna, Áo, nơi chứa Hầm mộ Hoàng gia]] **Hầm mộ Hoàng gia** (tiếng Đức: _Kaisergruft_), còn được gọi là **Hầm mộ Capuchin** ( _Kapuzinergruft_), là một không gian
nhỏ|250x250px|Đoạn video cho thấy những người lính IDF với phù hiệu cấp bậc của họ. Tư liệu trích từ kho lưu trữ của Công ty tin tức Israel của Kênh 2 Israel Quân hàm quân
**Quân hàm Hồng quân và Hồng Hải quân từ năm 1940 đến 1943** được đặc trưng bởi những cải cách liên tục đối với các lực lượng vũ trang Liên Xô trong giai đoạn ngay
[[Đồ thị hàm sin]] [[Đồ thị hàm cos]] [[Đồ thị hàm tan]] [[Đồ thị hàm cot]] [[Đồ thị hàm sec]] [[Đồ thị hàm csc]] Trong toán học nói chung và lượng giác học nói riêng,
**Cuộc vây hãm Genoa** (6 tháng 4 - 4 tháng 6 năm 1800) là một trận bao vây trong cuộc chiến tranh giữa Pháp với các quốc gia trong Liên minh thứ hai. Trong trận
nhỏ|Những người hâm mộ bộ truyện _[[Harry Potter_ đang trưng diện bộ áo choàng bản sao của ba nhân vật: Giáo sư McGonagall, Harry Potter và Severus Snape.]] **Cộng đồng hâm mộ thể loại kỳ
**Cuộc bao vây Viên** năm 1529 (để phân biệt với trận Viên năm 1683) là là nỗ lực đầu tiên của đế quốc Ottoman, dưới triều vua Suleiman I nhằm chiếm thành phố Vienna, Áo.
Trong suốt cuộc Chiến tranh Bảy năm, pháo đài Kolberg thuộc tỉnh Pomerania của Phổ (nay là Kołobrzeg, Ba Lan) đã quân đội Nga bao vây ba lần. Hai cuộc vây hãm đầu tiên, vào
**Cuộc bao vây Prague** là một nỗ lực bất thành của Quân đội Phổ lãnh đạo bởi Frederick đại đế nằm chiếm lấy thành phố Praha thuộc Áo trong Chiến tranh Bảy năm. Sự kiện
**Maria Theresia Walburga Amalia Christina của Áo** (; 13 tháng 5, năm 1717 - 29 tháng 11, năm 1780) là một thành viên và cũng là Nữ quân vương duy nhất của Nhà Habsburg, một
nhỏ|Một [[Nút cài|tấm huy hiệu năm 1959 dành cho các thành viên của CLB những người hâm mộ nam ca sĩ Lonnie Lee]] **Hội nhóm người hâm mộ**, hay gọi chuyên nghiệp hơn là **câu
phải|Một tia đi qua gốc của hyperbol \scriptstyle x^2\ -\ y^2\ =\ 1 cắt hyperbol tại điểm \scriptstyle (\cosh\,a,\,\sinh\,a), với \scriptstyle a là 2 lần diện tích của hình giới hạn bởi tia và trục
**Trận vây hãm Glatz** là một trận chiến diễn ra vào năm 1760 trong cuộc Chiến tranh bảy năm. Trong trận đánh này, quân đội đế quốc Áo do Ernst Gideon Freiherr von Laudon chỉ
**_Jumanji: Trò chơi kỳ ảo_** (tên gốc tiếng Anh: **_Jumanji: Welcome to the Jungle_**) là một bộ phim điện ảnh hài hước phiêu lưu hành động của Mỹ năm 2017 do Jake Kasdan đạo diễn
**Áo**, quốc hiệu là **Cộng hòa Áo**, là một quốc gia không giáp biển nằm tại Trung Âu. Quốc gia này tiếp giáp với Cộng hòa Séc và Đức về phía bắc, Hungary và Slovakia
**Rudolf của Áo** (_Rudolf Franz Karl Josef_; 21 tháng 8 năm 1858 – 30 tháng 1 năm 1889) là người con thứ ba và là con trai duy nhất của Hoàng đế Franz Joseph I
**Maria Karolina của Áo** (; tên đầy đủ: _Maria Karolina Luise Josepha Johanna Antonia_; 13 tháng 8 năm 1752 – 8 tháng 9 năm 1814) là Vương hậu của Napoli và Sicilia với tư cách
**Khoa học kỳ ảo** là một thể loại hỗn hợp trong phạm vi của giả tưởng suy đoán, đồng thời có sự hòa trộn hoặc kết hợp các dụ pháp và các yếu tố từ
nhỏ|Một vtuber sử dụng theo dõi tay hay là những nghệ sĩ giải trí trực tuyến sử dụng hình đại diện ảo được tạo bằng đồ họa máy tính và công nghệ ghi lại chuyển
**Maria Anna của Áo** (tiếng Đức: _Maria Anna von Österreich_; tiếng Tây Ban Nha: _Mariana de Austria_; tiếng Anh: _Mariana of Austria_; 24 tháng 12 năm 163416 tháng 5 năm 1696) là vương hậu của
**Karl Joseph Emanuel của Áo** (tên đầy đủ tiếng Đức là _Carl Josef Emanuel Johann Nepomuk Anton Prokop von Österreich_; 1 tháng 2 năm 1745 – 18 tháng 1 năm 1761), là đứa con thứ
nhỏ| Hàm [[sin và tất cả các đa thức Taylor của nó đều là các hàm lẻ. Hình ảnh này cho thấy \sin(x) và các xấp xỉ Taylor của nó, các đa thức bậc 1,
**West Ham United Football Club** là một câu lạc bộ bóng đá chuyên nghiệp Anh đặt trụ sở tại vùng phía đông thành phố Luân Đôn, thủ đô nước Anh. West Ham United đã 3
Sau đây là các quân hàm và cấp hiệu của quân nhân Đế quốc Nhật Bản. Chúng được cài trên cầu vài từ năm 1911 và trên cổ áo từ năm 1938. Đến ngày 10
**Cuộc vây hãm thành Pirna** (còn gọi là **Cuộc phong toả thành Pirna**) là một phần của cuộc chinh phạt Lãnh địa Tuyển hầu tước Sachsen do Vua nước Phổ phát động trong chiến tranh
right|thumb|Một lưới hình chữ nhật (trên) và ảnh của nó qua một [[ánh xạ bảo giác (dưới).]] Trong toán học, một **hàm chỉnh hình** (**ánh xạ bảo giác**) là một hàm nhận giá trị phức
**Sophie Friederike của Áo** (tiếng Đức: Sophie Friederike von Österreich; 5 tháng 3 năm 185529 tháng 5 năm 1857) là con đầu lòng của Franz Joseph I của Áo và Elisabeth xứ Bayern. ## Tiểu
Trong lý thuyết xác suất và thống kê, **hàm sinh mô men** (**moment-generating function** hay **MGF**) của một biến ngẫu nhiên là một mô tả thay thế cho hàm phân phối xác suất của nó.
**Hầm đường bộ Đèo Cả** là 1 hệ thống đường hầm thay thế cho Đèo Cả vốn rất hiểm trở và nguy hiểm. Đường hầm này nối liền 2 tỉnh Đắk Lắk và Khánh Hòa,
thumb|Đội nghi lễ của [[Quân Giải phóng Nhân dân Trung Quốc trong lễ phục mùa hè kiểu 14 tại Lễ duyệt binh Ngày chiến thắng tại Moskva năm 2015.]] **Quân hàm Quân Giải phóng Nhân
nhỏ|[[Quân hiệu Quân đội nhân dân Việt Nam]] **Quân hàm của Quân đội nhân dân Việt Nam** là biểu trưng thể hiện cấp bậc, ngạch bậc, quân chủng, binh chủng trong Quân đội nhân dân
[[Tập tin:Complex_theta_minus0point1times_e_i_pi_0point1.jpg|thế=|nhỏ|400x400px|Hàm theta gốc của Jacobi với và với nome Quy ước là (theo Mathematica): \begin{align} \theta_1(u;q) &= 2 q^\frac14 \sum_{n=0}^\infty (-1)^n q^{n(n+1)} \sin(2n+1)u \\ &= \sum_{n=-\infty}^{n=\infty} (-1)^{n-\frac12} q^{\left(n+\frac12\right)^2} e^{(2n+1)i u} \end{align}]] Trong toán học,
Trong giải tích toán học, một **hàm hermite** là một hàm phức với tính chất liên hợp phức của nó bằng hàm gốc với đối số được đổi dấu: : f^*(x) = f(-x) (ở đây
**_Đêm ở viện bảo tàng: Bí mật hầm mộ_** (tên gốc tiếng Anh: **_Night at the Museum: Secret of the Tomb_**) là một bộ phim hài phiêu lưu của Mỹ 2014 do Shawn Levy đạo
nhỏ|phải|200 px|Miệng cá mút đá. **Phân thứ ngành Cá không hàm** (danh pháp khoa học: **_Agnatha_**) (từ tiếng Hy Lạp, nghĩa là "không quai hàm") là một phân thứ ngành hay siêu lớp cận ngành
Cấp bậc và cấp hiệu Lực lượng Vũ trang Liên Xô từ năm 1955 đến năm 1991 được phân biệt bằng việc tái tổ chức Lực lượng Vũ trang Liên Xô sau cái chết của
[[Quốc kỳ Đế quốc Áo-Hung trong Chiến tranh thế giới thứ nhất]] Trong Chiến tranh thế giới thứ nhất, Đế quốc Áo-Hung là nước thuộc khối quân sự Liên minh Trung tâm gồm Đế quốc
**Đường hầm Yulhyeon** là một hầm đường sắt ở Hàn Quốc, được khai trương vào tháng 12 năm 2016 và hiện là hầm đường sắt dài thứ tư thế giới với chiều dài 50,3 kilômét.
**Lục quân Đế quốc Áo-Hung** là lực lượng lục quân của Đế quốc Áo-Hung tồn tại từ năm 1867 khi đế quốc này được thành lập cho đến năm 1918 khi đế quốc này tan
**Công quốc Áo** () là một công quốc thời Trung cổ của Đế chế La Mã Thần thánh, được thành lập vào năm 1156 bởi _Privilegium Minus_, khi Phiên hầu quốc Áo (Ostarrîchi) tách khỏi
Chương trình máy tính tưởng rằng nó có một dải dài các địa chỉ liên tục trong bộ nhớ; nhưng trong thực tế một số phần đang được sử dụng nằm rải rác trong [[RAM,
**Maria Antonia của Áo** (tiếng Đức: _Maria Antonia von Österreich_; 2 tháng 11 năm 1755 – 16 tháng 10 năm 1793), nguyên là Nữ Đại công tước Áo, thường được biết đến với tên Pháp
nhỏ|375x375px|[[Wiener Schnitzel, một món ăn truyền thống của Áo làm từ thịt không xương được làm mỏng bằng một cái vồ, và tẩm bột chiên giòn, trứng, bột mì rồi rán]] nhỏ|250x250px|[[Apfelstrudel]] **Ẩm thực Áo**
Bản đồ đề xuất của Liên bang Đại Áo, chồng lên các đường biên giới về sắc tộc của Đế quốc Áo Hung **Liên bang Đại Áo** (Tiếng Đức: _Vereinigte Staaten von Groß-Österreich_) là một
là một bộ manga tiếng Nhật do Kui Ryōko sáng tác và đăng tải trên tạp chí _Harta_ của Enterbrain từ năm 2014 đến năm 2023. Bộ truyện đã được IPM phát hành tại Việt
Hệ thống quân hàm quân đội Liên Xô từ năm 1943 có sự thay đổi lớn, được thực hiện ngay trong thời gian Chiến tranh Vệ quốc vĩ đại và sử dụng đến
: **Franz Ferdinand** (18 tháng 12 năm 1863 – 28 tháng 6 năm 1914) là Người thừa kế lâm thời của Áo-Hung, Hoàng điệt của Đế quốc Áo và Vương điệt Vương thất Hungary và