日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

为什么构造函数不能声明为虚函数,析构函数可以,构造函数中为什么不能调用虚函数?

發(fā)布時(shí)間:2024/9/27 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 为什么构造函数不能声明为虚函数,析构函数可以,构造函数中为什么不能调用虚函数? 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

為什么構(gòu)造函數(shù)不能聲明為虛函數(shù),析構(gòu)函數(shù)可以,構(gòu)造函數(shù)中為什么不能調(diào)用虛函數(shù)

  • 構(gòu)造函數(shù)中為什么不能調(diào)用虛函數(shù)?
    • 第一個(gè)理由是概念上的
    • 第二個(gè)理由是機(jī)械上的。
  • 構(gòu)造函數(shù)不能聲明為虛函數(shù)的原因是
    • 1 構(gòu)造一個(gè)對(duì)象的時(shí)候,必須知道對(duì)象的實(shí)際類型,而虛函數(shù)行為是在運(yùn)行期間確定實(shí)際類型的。
    • 2 虛函數(shù)的執(zhí)行依賴于虛函數(shù)表。而虛函數(shù)表在構(gòu)造函數(shù)中進(jìn)行初始化工作,即初始化vptr,讓他指向正確的虛函數(shù)表。
  • 注意點(diǎn)

構(gòu)造函數(shù)中為什么不能調(diào)用虛函數(shù)?

構(gòu)造函數(shù)調(diào)用層次會(huì)導(dǎo)致一個(gè)有趣的兩難選擇。試想:如果我們?cè)跇?gòu)造函數(shù)中并且調(diào)用了虛函數(shù),那么會(huì)發(fā)生什么現(xiàn)象呢?在普通的成員函數(shù)中,我們可以想象所發(fā)生的情況——虛函數(shù)的調(diào)用是在運(yùn)行時(shí)決定的。這是因?yàn)榫幾g時(shí)這個(gè)對(duì)象并不能知道它是屬于這個(gè)成員函數(shù)所在的那個(gè)類,還是屬于由它派生出來(lái)的某個(gè)類。于是,我們也許會(huì)認(rèn)為在構(gòu)造函數(shù)中也會(huì)發(fā)生同樣的事情。
然而,情況并非如此。對(duì)于在構(gòu)造函數(shù)中調(diào)用一個(gè)虛函數(shù)的情況,被調(diào)用的只是這個(gè)函數(shù)的本地版本。也就是說(shuō),虛機(jī)制在構(gòu)造函數(shù)中不工作。

第一個(gè)理由是概念上的

在概念上,構(gòu)造函數(shù)的工作是生成一個(gè)對(duì)象。在任何構(gòu)造函數(shù)中,可能只是部分形成對(duì)

總結(jié)

以上是生活随笔為你收集整理的为什么构造函数不能声明为虚函数,析构函数可以,构造函数中为什么不能调用虚函数?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。