C++知識 抽象基類

抽象基類通常包含至少一個純虛函數,即一個沒有具體實現的虛函數,通過在基類中聲明純虛函數,它強制派生類提供這個函數的具體實現。

通過在類的聲明中使用 virtual 關鍵字和 = 0 初始化來創建純虛函數,這樣的類就成為抽象基類。以下是一個示例:

class Shape {
public:// 純虛函數,使得Shape成為抽象基類virtual void draw() const = 0;// 其他虛函數virtual double area() const {return 0.0;}// 普通成員函數void displayInfo() const {// ...}
};

讓我們對 virtual void draw() const = 0; 這行代碼的每個部分進行簡單的介紹:

  1. virtual 關鍵字:

    • virtual 是 C++ 中用于聲明虛函數的關鍵字。
  2. void

    • void 是函數的返回類型,表示該函數不返回任何值。
  3. draw()

    • draw 是函數的名稱,這里是虛函數的名稱。
  4. const 關鍵字:

    • const 是常量修飾符,表示該函數不會修改調用對象的成員變量。
    • 這種聲明方式可以使得常量對象也能夠調用這個函數。
  5. = 0

    • = 0 是在聲明中虛函數的方式,表示這是一個純虛函數。
    • 純虛函數是沒有實際實現的虛函數,要求任何派生類必須提供自己的實現。
    • 類中有純虛函數的類稱為抽象基類,不能被實例化,只能被用作其他類的基類。

所以,virtual void draw() const = 0; 表示這是一個虛函數 draw,它是一個純虛函數,沒有具體的實現,而且它不會修改調用對象的狀態。

在這個例子中,Shape 就是一個抽象基類,它包含一個純虛函數 draw()。任何繼承自 Shape 的派生類都必須提供 draw() 的具體實現。

int main() { // 錯誤,不能實例化抽象類 // Shape shape; // Shape的純虛函數draw()必須在派生類中實現return 0; }

抽象基類的目的是為了提供一個通用的接口,使得不同的派生類能夠共享相似的行為,并通過多態性實現對這些不同派生類的統一處理。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/210865.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/210865.shtml
英文地址,請注明出處:http://en.pswp.cn/news/210865.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

上位機與PLC:ModbusTCP通訊之數據類型轉換

前請提要: 從PLC讀取的數值,不管是讀正負整數還是正負浮點數,讀取過來后都會變成UInt16,也就是Ushort類型 一、ushort(UInt16)轉成 Int32 源代碼方法: //ushort類型轉Int32類型的方法private int ushortToInt32(ushort[] date, int start){//先進行判斷,長度是否正確…

MySQL_6.MySQL常用創建語句

1.數據庫創建,查詢,刪除 (1)創建一個test數據庫 CREATE DATABASE test ; CREATE DATABASE IF NOT EXISTS test; # default character set :默認字符集 CREATE DATABASE IF NOT EXISTS test default character set UTF8; # default collate:默認排序規格 # utf8_g…

前端知識(七)———HTTPS:保護網絡通信安全的關鍵

當談到網絡通信和數據傳輸時,安全性是一個至關重要的問題。在互聯網上,有許多敏感信息需要通過網絡進行傳輸,例如個人身份信息、銀行賬戶信息和商業機密等。為了保護這些信息不被未經授權的人訪問和篡改,HTTPS(超文本傳…

AI:大語言模型LLM

LLM 大語言模型(Large Language Model,LLM)是一種利用大量文本數據進行訓練的自然語言處理模型,其評價可以從多個方面進行。 以下是一些主要的評價方面: 語言理解和生成能力:評價大語言模型在自然語言理…

模型評價指標

用訓練好的模型結果進行預測,需要采用一些評價指標來進行評價,才可以得到最優的模型 常用的指標: 1.分類任務 ConfusionMatrix 混淆矩陣Accuracy 準確率Precision 精確率Recall 召回率F1 score H-mean值ROC Curve ROC曲線PR …

PostgreSQL pgvector:如何利用向量數據庫提升搜索效率和精度

LLMs模型實戰教程 文章來源:https://zhuanlan.zhihu.com/p/641516393 Kevin 一、介紹 隨著基礎模型的興起,向量數據庫的受歡迎程度也飆升。事實上,在大型語言模型環境中,向量數據庫也很有用。 在機器學習領域,我們經…

天池SQL訓練營(三)-復雜查詢方法-視圖、子查詢、函數等

-天池龍珠計劃SQL訓練營 SQL訓練營頁面地址:https://tianchi.aliyun.com/specials/promotion/aicampsql 3.1 視圖 我們先來看一個查詢語句(僅做示例,未提供相關數據) SELECT stu_name FROM view_students_info;單從表面上看起來…

C#反射加載程序集并使用

具體實現參考: C# 動態加載DLL通過反射調用參數、方法、窗體_c#反射加載dll并傳入參數-CSDN博客 C#進階學習--反射(Reflection) - 知乎 走進C#反射機制 - 知乎 1.使用過程 //創建數據集 Assembly outerAsm Assembly.LoadFile("D:/your.dll");//獲取…

rancher harvester deploy demo 【部署 harvester v1.2.1】

簡介 Harvester 是一個現代的、開放的、可互操作的、基于Kubernetes的超融合基礎設施(HCI)解決方案。它是一種開源替代方案,專為尋求云原生HCI解決方案的運營商而設計。Harvester運行在裸機服務器上,提供集成的虛擬化和分布式存儲功能。除了傳統的虛擬機…

pgsql存儲過程

由于部分企業數據庫從aws遷移到騰訊云,導致有一個定時任務(從詳情表匯總數據到統計表中)錯過了觸發,所以這部分企業的數據需要觸發重新刷一下,但是又有規定白天不允許上線,只能把定時任務的邏輯用存儲過程&…

SQL SELECT 語句

SELECT 語句用于從數據庫中選取數據。 SQL SELECT 語句 SELECT 語句用于從數據庫中選取數據。 結果被存儲在一個結果表中,稱為結果集。 SQL SELECT 語法 SELECT column1, column2, ... FROM table_name; 與 SELECT * FROM table_name; 參數說明: …

五花八門客戶問題(BUG) - 用好strace

strace簡介 strace是一個用于跟蹤系統調用和信號傳遞的Linux命令,它是一個集診斷、調試、統計于一體的工具。strace可以監控用戶空間進程和內核的交互,比如系統調用、信號傳遞、進程狀態變更等。它底層使用內核的ptrace特性來實現其功能。 strace最簡單的用法是執行一個指定…

二分查找|雙指針:LeetCode:2398.預算內的最多機器人數目

作者推薦 本文涉及的基礎知識點 二分查找算法合集 滑動窗口 單調隊列:計算最大值時,如果前面的數小,則必定被淘汰,前面的數早出隊。 題目 你有 n 個機器人,給你兩個下標從 0 開始的整數數組 chargeTimes 和 runnin…

Django回顧7

一.Django緩存 1.緩存介紹 在動態網站中,用戶所有的請求,服務器都會去數據庫中進行相應的增,刪,查,改,渲染模板,執行業務邏輯,最后生成用戶看到的頁面. 當一個網站的用戶訪問量很大的時候,每一次的的后臺操作,都會消耗很多的服務端資源,所以必須使用緩存來減輕后端服務器的壓力…

算法:最長公共前綴(橫向掃描和縱向掃描)

橫向掃描 時間復雜度 O(m * n),空間復雜度O(1) /*** param {string[]} strs* return {string}*/ var longestCommonPrefix function(strs) {// 先把第一個字符串拿出來let str strs[0]// 用 startsWith 檢查數組中每個字符串是否以當前字符串為前綴while(!strs.e…

聽GPT 講Rust源代碼--src/tools(11)

File: rust/src/tools/rust-analyzer/crates/hir/src/lib.rs 在Rust源代碼中,rust/src/tools/rust-analyzer/crates/hir/src/lib.rs文件的作用是定義了Rust語言的高級抽象層次(Higher-level IR,HIR)。它包含了Rust語言的各種結構和…

Python:核心知識點整理大全10-筆記

目錄 5.4 使用 if 語句處理列表 5.4.1 檢查特殊元素 toppings.py 5.4.2 確定列表不是空的 5.4.3 使用多個列表 5.5 設置 if 語句的格式 5.6 小結 第6章 字 典 6.1 一個簡單的字典 alien.py 6.2 使用字典 6.2.1 訪問字典中的值 6.2.2 添加鍵—值對 6.2.3 先創建一…

智能優化算法應用:基于蜉蝣算法3D無線傳感器網絡(WSN)覆蓋優化 - 附代碼

智能優化算法應用:基于蜉蝣算法3D無線傳感器網絡(WSN)覆蓋優化 - 附代碼 文章目錄 智能優化算法應用:基于蜉蝣算法3D無線傳感器網絡(WSN)覆蓋優化 - 附代碼1.無線傳感網絡節點模型2.覆蓋數學模型及分析3.蜉蝣算法4.實驗參數設定5.算法結果6.參考文獻7.MA…

JAVA+SSM+springboot+MYSQL企業物資庫存進銷存管理系統

。該系統從兩個對象:由管理員和員工來對系統進行設計構建。主要功能包括首頁、個人中心、員工管理、項目信息管理、倉庫信息管理、供應商管理、項目計劃管理、物資庫存管理、到貨登記管理、物資出庫管理、物資入庫管理等功能進行管理。本企業物資管理系統方便員工快…

linux 定時任務

使用 crontab Usage: crontab [-u user] [-e|-l|-r] Crontab 的格式說明如下: * 逗號(‘,’) 指定列表值。如: “1,3,4,7,8″ * 中橫線(‘-’) 指定范圍值 如 “1-6″, 代表 “1,2,3,4,5,6″ * 星號 (‘*’) 代表所有可能的值 */15 表示每 15 分鐘執行一次 # Use the ha…