c++ 内聯函數不能成為虛函數
- 内聯函數是靜态行為(編譯時),虛函數是動态行為(運作時);
- 之是以能看到一些像内聯函數的虛函數,是因為某個函數是否是内聯函數不是由我們說的算,而是由編譯器決定的。我們隻能向編譯器建議,某個函數可以是内聯函數(inline關鍵字),但是編譯器有自己的判斷法則。是以可能出現這樣的情況,
- 我們用inline聲明的函數卻沒有inline;
- 我們沒有用inline聲明的函數卻是inline;
#include<iostream>
using namespace std;
class A{
public:
inline virtual void vir_f() {
cout<<"A中虛函數,inline在這不起作用!"<<endl;
}
void f();
};
inline void A::f() {
cout<<"真正的内聯函數,不能同時設定為虛函數!"<<endl;
}
class B:public A
{
public:
virtual void vir_f() {
cout<<"我是B中虛函數!"<<endl;
}
};
如果覺得本文對您有幫助,請點選‘頂’支援一下,您的支援是我寫作最大的動力,謝謝。