国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

C++中為什么不能把所有函數(shù)都設置成虛函數(shù)?

這篇具有很好參考價值的文章主要介紹了C++中為什么不能把所有函數(shù)都設置成虛函數(shù)?。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

在面試的時候被問到一個問題,既然虛函數(shù)可以不被重寫,為什么不把所有的函數(shù)都設置成虛函數(shù)?
我當時的回答是,因為對于工程來說,一個類里可能會有很多的函數(shù),都設置成虛函數(shù)的話會有很多不必要的開銷(虛函數(shù)表)。但總覺得回答不夠完善,所以閑下來去了解了一下這個問題:
1.有些函數(shù)不能設置成虛函數(shù),如:構造函數(shù)、內聯(lián)成員函數(shù)、靜態(tài)成員函數(shù)、友元函數(shù)、普通函數(shù)(非成員函數(shù)),他們各有其原因:

1)構造函數(shù):不能被繼承;構造函數(shù)時,函數(shù)還沒實例化,無法通過虛函數(shù)表指針尋找虛函數(shù);
2)內聯(lián)成員函數(shù):內聯(lián)要求在編譯時展開該函數(shù),而虛函數(shù)要求動態(tài)綁 定;
3)靜態(tài)成員函數(shù):靜態(tài)函數(shù)被類成員共享、只有一份且不可繼承;
4)友元函數(shù):不屬于成員函數(shù)、無法繼承;
5)普通函數(shù):不能被繼承、不能被重寫;編譯時已綁定;
(當然,我們也可以假定給這些函數(shù)強行virtual)

2.時間(定向)和空間(建立虛函數(shù)表)的無意義花費;
3.virtual這個關鍵字本身可以對程序員起到提醒的作用;文章來源地址http://www.zghlxwxcb.cn/news/detail-411365.html

到了這里,關于C++中為什么不能把所有函數(shù)都設置成虛函數(shù)?的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • C++ 為什么double類型不能直接判斷等于0 兩個double類型怎么判斷相等

    精度丟失, 十進制小數(shù)部分在轉換成2進制的時候經(jīng)常會出現(xiàn)無限位的二進制小數(shù),計算機存儲小數(shù)有長度限制,所以會進行截取部分小數(shù)進行存儲,計算機只能存儲大概的值,而不是精確的值 。 例如: 判斷一個單精度浮點數(shù):則是 if( abs(f) = 1e-6); 要判斷一個雙精度浮點數(shù)

    2024年02月12日
    瀏覽(103)
  • 【C++學習】C++入門 | 缺省參數(shù) | 函數(shù)重載 | 探究C++為什么能夠支持函數(shù)重載

    【C++學習】C++入門 | 缺省參數(shù) | 函數(shù)重載 | 探究C++為什么能夠支持函數(shù)重載

    上一篇文章我介紹了C++該怎么學,什么是命名空間,以及C++的輸入輸出, 這里是傳送門:http://t.csdn.cn/Oi6V8 這篇文章我們繼續(xù)來學習C++的基礎知識。 目錄 寫在前面: 1. 缺省參數(shù) 2. 函數(shù)重載 3. C++是如何支持函數(shù)重載的 寫在最后: 在學習C語言的時候,如果一個函數(shù)存在參數(shù)

    2024年02月13日
    瀏覽(25)
  • 【C++入門】你知道C++為什么會有內聯(lián)函數(shù)嗎?

    【C++入門】你知道C++為什么會有內聯(lián)函數(shù)嗎?

    ??個人主頁:@Weraphael ???作者簡介:目前學習C++和算法 ??專欄:C++航路 ?? 希望大家多多支持,咱一起進步!?? 如果文章對你有幫助的話 歡迎 評論?? 點贊???? 收藏 ?? 加關注? 本章是補充C語言語法的不足,以及C++是如何對C語言設計不合理的地方進行優(yōu)化的。 我

    2024年02月03日
    瀏覽(22)
  • 為什么通過EasyExcel下載 Excel 文件時,response.setContentType(“application/octet-stream“) 這樣設置,下載下來的文件不能顯示文件名稱?

    response.setContentType(\\\"application/octet-stream\\\") 是用來告訴瀏覽器服務器返回的數(shù)據(jù)是二進制流,因為 octet-stream 意味著 \\\"一個未知的字節(jié)流\\\"。當瀏覽器收到這個響應時,它無法確定數(shù)據(jù)類型,所以它的解析方式會嘗試將這些未知字節(jié)自動轉換為可讀的格式。 當您使用 EasyExcel 將數(shù)據(jù)

    2024年02月13日
    瀏覽(39)
  • 【C++】 為什么多繼承子類重寫的父類的虛函數(shù)地址不同?『 多態(tài)調用匯編剖析』

    【C++】 為什么多繼承子類重寫的父類的虛函數(shù)地址不同?『 多態(tài)調用匯編剖析』

    ?? 樊梓慕: 個人主頁 ??? 個人專欄: 《C語言》 《數(shù)據(jù)結構》 《藍橋杯試題》 《LeetCode刷題筆記》 《實訓項目》 《C++》 《Linux》《算法》 ?? 每一個不曾起舞的日子,都是對生命的辜負 本篇文章主要是為了解答有關多態(tài)的那篇文章那塊的一個奇怪現(xiàn)象,大家還記得這張

    2024年02月19日
    瀏覽(26)
  • 為什么 volatile不能保證原子性

    volatile 本質上是一種內存屏障,它可以確保在 volatile 變量寫操作和讀操作之間不會發(fā)生重排序,這樣就可以保證對 volatile 變量的修改能夠立即對其他線程可見。但是, volatile 只能保證可見性,并不能保證原子性。 在 Java 中,原子性是指一個操作是不可中斷的,即使在

    2024年02月15日
    瀏覽(28)
  • 為什么sessionStorage不能代替vuex

    Vuex 是一個專為 Vue.js 應用程序開發(fā)的狀態(tài)管理模式。它采用集中式存儲管理應用的所有組件的狀態(tài),并以相應的規(guī)則保證狀態(tài)以一種可預測的方式發(fā)生變化。 譯為“會話存儲”,也是HTML5新增的一個存儲對象, 用于本地臨時存儲同一窗口的數(shù)據(jù),在 關閉窗口之后 將會刪除這

    2024年02月09日
    瀏覽(27)
  • STM32為什么不能跑Linux?

    STM32是一系列基于ARM Cortex-M微控制器的產品,它們主要用于嵌入式系統(tǒng)中。而Linux則是一個開源的類Unix操作系統(tǒng),主要面向的是桌面電腦、服務器等資源豐富的計算機。雖然理論上可以將Linux移植到STM32上運行,但是由于兩者之間存在著很多技術差異,導致在實際使用中面臨著

    2024年04月10日
    瀏覽(28)
  • 【C++學習】類和對象 | 拷貝構造 | 探索拷貝構造函數(shù)為什么需要引用傳參 | 深拷貝 | 初識運算符重載

    【C++學習】類和對象 | 拷貝構造 | 探索拷貝構造函數(shù)為什么需要引用傳參 | 深拷貝 | 初識運算符重載

    上一篇文章我們開始學習類內的默認成員函數(shù), 這里是傳送門,有興趣可以去看看:http://t.csdn.cn/iXdpH 這篇文章我們繼續(xù)來學習類和對象的知識。 目錄 寫在前面: 1. 拷貝構造 2. 拷貝構造函數(shù)為什么需要引用傳參? 3. 深拷貝 4. 初識運算符重載 寫在最后: 我們在創(chuàng)建一個對

    2024年02月11日
    瀏覽(24)
  • 為什么MySQL單表不能超過2000萬行?

    摘要: MySQL一張表最多能存多少數(shù)據(jù)? 本文分享自華為云社區(qū)《為什么MySQL單表不能超過2000萬行?》,作者: GaussDB 數(shù)據(jù)庫 。 最近看到一篇《我說MySQL每張表最好不要超過2000萬數(shù)據(jù),面試官讓我回去等通知》的文章,非常有趣。 文中提到,他朋友在面試的過程中說,自己的

    2024年02月05日
    瀏覽(21)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包