原文:構造函數為什么不能是虛函數

從存儲空間角度看 虛函數相應一個指向vtable虛函數表的指針,這大家都知道,但是這個指向vtable的指針事實上是存儲在對象的內存空間的。 問題出來了,假設構造函數是虛的。就須要通過 vtable來調用。但是對象還沒有實例化,也就是內存空間還沒有,怎么找vtable呢 所以構造函數不能是虛函數。 從使用角度 虛函數主要用於在信息不全的情況下,能使重載的函數得到相應的調用。構造函數本身就是要初始 ...

2015-12-19 18:50 0 3161 推薦指數:

查看詳情

構造函數為什么不能是函數

1. 從存儲空間角度,函數對應一個指向vtable函數表的指針,這大家都知道,可是這個指向vtable的指針其實是存儲在對象的內存空間的。問題出來了,如果構造函數的,就需要通過 vtable來調用,可是對象還沒有實例化,也就是內存空間還沒有,怎么找vtable呢?所以構造函數 ...

Wed Aug 29 03:23:00 CST 2012 1 24273
為什么構造函數不能是函數(轉)

來源:http://blog.sina.com.cn/s/blog_620882f401016ri2.html 1,從存儲空間角度 函數對應一個vtable,這大家都知道,可是這個vtable的指針其實是存儲在對象的內存空間的。問題出來了,如果構造函數的,就需要 ...

Fri Sep 13 01:00:00 CST 2019 0 455
C++構造函數 & 拷貝構造函數 & 派生類的構造函數 & 繼承的構造函數

構造函數 ,是一種特殊的方法 。主要用來在創建對象時初始化對象, 即為對象成員變量賦初始值,總與new運算符一起使用在創建對象的語句中 。特別的一個類可以有多個構造函數 ,可根據其參數個數的不同或參數類型的不同來區分它們 即構造函數的重載。(摘自百度百科構造函數)。 一、最基本的構造函數 ...

Fri Aug 15 04:56:00 CST 2014 0 2764
構造函數和析構函數可以是函數

轉:https://www.cnblogs.com/ktao/p/7563289.html 1. 為什么構造函數不能為函數函數的調用需要函數表指針,而該指針存放在對象的內存空間中;若構造函數聲明為函數,那么由於對象還未創建,還沒有內存空間,更沒有函數表地址用來調用 ...

Fri May 15 02:15:00 CST 2020 0 4230
構造函數和析構函數能是函數嗎?

1. 為什么構造函數不能為函數函數的調用需要函數表指針,而該指針存放在對象的內容空間中;若構造函數聲明為函數,那么由於對象還未創建,還沒有內存空間,更沒有函數表地址用來調用函數——構造函數了。 2. 為什么析構函數可以為函數,如果不設為函數 ...

Thu Sep 21 03:42:00 CST 2017 0 1523
[C++基礎]047_構造函數為什么不能是函數

本文的主題是構造函數不能是函數,首先這不需要你用腦子去記,因為當你寫出來虛構造函數時,編譯器是能檢查出來的。本文的目的是為什么構造函數不能是函數。 首先,先看一段錯誤的代碼,下面的代碼是通不過編譯階段的。 為什么構造函數不能是函數呢?這里你需要知道一個概念,那就是函數 ...

Sat Dec 29 06:39:00 CST 2012 1 4825
C++構造函數中不能調用函數

構造函數中調用函數,並不會產生多態的效果,就跟普通函數一樣。 c++ primer 第四版中497頁15.4.5構造函數和析構中的函數講到,如果在構造函數或析構函數中調用函數,則運行的是為構造函數或析構函數自身類型定義的版本。另外,必須通過基類類型的引用或指針進行函數調用才會發生多態 ...

Mon Aug 22 22:18:00 CST 2016 0 1774
C/C++ 構造函數不能是函數

1、如果構造函數函數,則它需要通過類的虛表來調用,而虛表的指針保存在對象中,沒有調用構造函數,就沒有對象。 ...

Tue Mar 17 04:26:00 CST 2020 0 1003
 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM