天天看點

5 c++ 内聯函數不能成為虛函數(virtual)

c++ 内聯函數不能成為虛函數

  1. 内聯函數是靜态行為(編譯時),虛函數是動态行為(運作時);
  2. 之是以能看到一些像内聯函數的虛函數,是因為某個函數是否是内聯函數不是由我們說的算,而是由編譯器決定的。我們隻能向編譯器建議,某個函數可以是内聯函數(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;
    }
};
           
如果覺得本文對您有幫助,請點選‘頂’支援一下,您的支援是我寫作最大的動力,謝謝。