首頁 後端開發 C#.Net教程 什麼是虛函數

什麼是虛函數

May 05, 2019 pm 04:54 PM
虛函數

虛擬函數是指:在某一基底類別中宣告為virtual並且在一個或多個衍生類別中被重新定義的成員函數,即被virtual關鍵字修飾的成員函數;格式為「virtual 函數傳回型別函數名(參數表) {函數體}」。

什麼是虛函數

在某基類別中宣告為virtual 並且在一個或多個衍生類別中被重新定義的成員函數,用法格式為:virtual函數傳回型別函數名稱(參數表) {函數體};實作多態性,透過指向衍生類別的基底類別指標或引用,存取衍生類別中同名覆寫成員函數。

簡單來說,那些被virtual關鍵字修飾的成員函數,就是虛函數。

首先:強調一個概念定義一個函數為虛函數,不代表函數為不被實現的函數。定義它為虛函數是為了允許用基底類別的指標來呼叫子類別的這個函數。定義一個函數為純虛函數,才代表函數沒有被實現。定義純虛函數是為了實作一個接口,起到一個規範的作用,規範繼承這個類別的程式設計師必須實作這個函數。

例:

class A
{
public:
virtual void foo()
{
cout<<"A::foo() is called"<<endl;
}
};
class B:public A
{
public:
void foo()
{
cout<<"B::foo() is called"<<endl;
}
};
int main(void)
{
A *a = new B();
a->foo(); // 在这里,a虽然是指向A的指针,但是被调用的函数(foo)却是B的!
return 0;
}
登入後複製

這個例子是虛函數的典型應用,透過這個例子,也許你就對虛函數有了一些概念。它虛就虛在所謂「推遲聯編」或「動態聯編」上,一個類別函數的呼叫並不是在編譯時刻被決定的,而是在運行時刻被決定的。由於寫程式碼的時候並不能確定被呼叫的是基底類別的函數還是哪個衍生類別的函數,所以被成為「虛」函數。虛函數只能藉助指標或引用來達到多態的效果。

以上是什麼是虛函數的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1672
14
CakePHP 教程
1428
52
Laravel 教程
1332
25
PHP教程
1276
29
C# 教程
1256
24
C++ 函式偵錯詳解:如何除錯虛擬函式中的問題? C++ 函式偵錯詳解:如何除錯虛擬函式中的問題? May 02, 2024 pm 03:42 PM

虛擬函數偵錯方法:設定斷點單步執行;使用assert()驗證條件;利用偵錯器工具檢查動態類型、函數堆疊和重新定義虛擬函數。

C++ 函式重載與虛擬函式如何協作? C++ 函式重載與虛擬函式如何協作? Apr 26, 2024 am 10:09 AM

C++中函数重载允许为具有不同参数的同名函数定义不同的实现,而虚函数允许在派生类中覆盖基类函数,实现多态性。函数重载和虚函数可以协同工作,通过在基类中设计一个虚拟重载函数,派生类可以仅重载特定参数组合的版本,从而提供更灵活的多态性,如实战案例中计算不同类型形狀到原點的距離。

C++ 友元函數與虛擬函數的交互 C++ 友元函數與虛擬函數的交互 Apr 16, 2024 pm 03:45 PM

在C++中,友元函數與虛擬函數互動使友元函數可以存取虛擬函數,並呼叫衍生類別中的友元函數存取基底類別的私有成員。這種互動可用於存取繼承體系中隱藏的資料或實作多型行為。

C++ 中如何宣告和呼叫虛擬函式? C++ 中如何宣告和呼叫虛擬函式? Apr 12, 2024 pm 04:03 PM

虛擬函數是一種多態性機制,允許衍生類別覆寫其基底類別的成員函數:聲明:在函數名稱前加上關鍵字virtual。呼叫:使用基底類別指標或引用,編譯器將動態綁定到衍生類別的適當實作。實戰案例:透過定義基底類別Shape及其衍生類別Rectangle和Circle,展示虛函數在多態中的應用,計算面積和繪製形狀。

C++ 函式可以宣告為虛函式嗎?虛函數的作用是什麼? C++ 函式可以宣告為虛函式嗎?虛函數的作用是什麼? Apr 19, 2024 pm 06:06 PM

C++中的虛函數允許衍生類別重新定義從基底類別繼承的方法,實現多態。其語法為:在基底類別中用virtual關鍵字宣告虛擬函數,在衍生類別中用override重新定義。透過指標或引用呼叫虛擬函數,可實現衍生類別物件呼叫基底類別虛函數。虛函數的主要作用包括:實作多態、支援動態綁定和提供抽象。

C++ 虛擬函數的奧秘揭曉 C++ 虛擬函數的奧秘揭曉 Apr 19, 2024 am 09:18 AM

虛函數使用動態綁定在運行時決定要呼叫的函數,以實現多態性。其優點包括可擴展性、可重複使用性,但也會帶來開銷和複雜性。虛擬函數經常用於實作不同類型的物件以統一的方式呼叫方法。

C++中的虛擬函式和純虛函式的應用技巧 C++中的虛擬函式和純虛函式的應用技巧 Aug 22, 2023 am 11:33 AM

C++中的虛擬函式和純虛函式是許多使用物件導向程式設計的程式設計師常用的工具。在正確使用它們的前提下,可以大大提高程式的靈活性和可維護性。本文將探討虛擬函數和純虛函數的應用技巧,並分享一些實際開發的經驗。一、虛擬函數1.什麼是虛擬函數?虛擬函數是用於實現多態的一種技術,它允許類別的成員函數在運行時動態確定。當使用基底類別指標或引用呼叫虛擬函數時,程式會根據實際物件的類型

C++語法錯誤:類別模板成員函數不能是虛擬函數,該怎麼處理? C++語法錯誤:類別模板成員函數不能是虛擬函數,該怎麼處理? Aug 22, 2023 am 10:09 AM

C++是一種廣泛使用的程式設計語言。作為一種強類型、通用、物件導向的程式語言,它具有高效、穩定、可擴展等特點。在C++的程式設計過程中,使用類別和模板可以幫助我們快速有效地實現我們的程式碼邏輯。然而,在實際過程中可能會遇到一些問題,例如類別模板成員函數不能是虛函數的問題。這種情況通常發生在使用模板類的時候,我們定義了一個模板類,並在其中定義了一些虛擬函數,但是編譯器卻報

See all articles