這個問題在這里已經有了答案: 可以在不使用指標和使用 C 中的常規物件的情況下進行動態系結嗎 1 個答案 “純虛函式呼叫”崩潰從何而來? (8 個回答) 17 小時前關閉。
據說在C 建構式中,只要物件沒有完成構造,就不應該呼叫虛函式,否則會拋出“純虛函式呼叫錯誤”。所以我嘗試了這個:
#include<stdio.h>
class A{
virtual void f() = 0;
};
class A1 : public A{
public:
void f(){printf("virtual function");}
A1(){f();}
};
int main(int argc, char const *argv[]){
A1 a;
return 0;
}
在 Windows 上用 g 編譯它,它可以作業并列印
virtual function
那么如何讓我的程式拋出“純虛函式呼叫”例外呢?
謝謝!
uj5u.com熱心網友回復:
您沒有收到“純虛擬方法呼叫”例外,因為A::f()沒有被呼叫。
A1的建構式正在呼叫它自己的方法,這在' 的構造A1::f()程序中是完全安全的。A1
在建構式中呼叫虛方法的問題與呼叫派生類方法的基類建構式有關,這不起作用,因為正在構造的物件的派生部分還不存在。
所以,要獲得你想要的例外,你需要呼叫f()inA的建構式而不是 inA1的建構式。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/492949.html
