有人可以解釋關於C++對象模型的這個理論問題嗎?這是我最近的一次考試,我被它困住了。將元類級別添加到C++對象模型
問題: 注意到Java,C#和Smalltalk的成功,C++標準委員會決定爲該語言的對象模型增加一個額外的級別。也就是說,每個類都應該有一個在運行時具有表示形式的元類。
反對者說這與語言的基本原理之一相矛盾。哪一個?說明。
對手也聲稱C++有一個額外的「半級」,允許完整的元類級別的一些功能。這是什麼「半個層次」,什麼樣的類型享受它的能力?
支持者提出了一個成功的論點。添加一個級別將爲標記階段提供對Mark &掃描垃圾回收的支持(其中所有可訪問的對象首先被標記,然後釋放不可訪問的對象)。他們的論點依賴於額外層面的哪些特徵?
此外,支持者提出了另一個論點。即使沒有垃圾收集系統,額外的級別也會使虛擬析構函數變得冗餘。說明何時以及爲什麼需要虛擬析構函數,以及額外的級別如何消除該要求?
請解釋哪些部分?你懂什麼,你有什麼不明白的地方?你會回答什麼? (如果你對此的回答是「我不知道該怎麼回答」,向你解釋這將需要教大量的C++,從而使這個問題的方式過於寬泛) –
所以你在考試期間無法回答這個問題。很公平。但是你現在擁有所有的資源,包括完整的互聯網。你自己回答這些問題有多遠? – Bart
我在考試中實際回答了一些問題。我相信問題1)是關於C++是靜態類型的,因此,元類運行時惡意代碼會違反該主體。對於2),我回答了C++中的模板/泛型可能會提供這種「半級」功能。第3和第4部分是我有點失落的地方。 –