Java介面中的方法能被內聯嗎,什麼情況下會被內聯

時間 2021-05-29 22:26:56

1樓:萌萌

虛函式靜態呼叫",像這樣:

pclass->class::vf()

或者在類體內呼叫class::vf() //相當於this->class::vf(),這種呼叫方式其實類似第二種呼叫方式。

如果你可以肯定你要呼叫的函式,並且這個函式不需要執行時刻確定的資料。就可以這樣寫來提高效率,不錯吧。

2. 用乙個類物件通過成員選擇符.呼叫虛函式,如:

obj.vf()

這時虛函式vf()就可以被vc優化內聯展開。這樣呼叫等於告訴編譯器你要呼叫的具體函式,在函式有inline修飾或是體內定義的情況下就會被內聯展開。

3. 虛析構函式的靜態呼叫鏈一定會被內聯展開(Lippman文章提到的,見後附文章)。

不會內聯的情況:

用類指標呼叫虛函式如:

pclass->vf()

這時vf()無論如何不會被內聯展開。(即便使用__forceinline關鍵字強制內聯也不行,最終他還是乙個非inline函式。)

通過類指標呼叫虛函式,由於虛函式的多型性,那就意味著你在告訴編譯器,這是乙個需要在執行時"動態"呼叫的函式,不要把它內聯。

JAVA的子介面可以覆蓋父介面中的方法,這樣做有什麼意義嗎?

飯後一杯酒 這樣做是沒有意義的。因為介面本身的意義在於對行為的抽象,以spring中BeanFactory為例,其存在的含義在於定義如何建立 獲取beanDefinition。而建立 獲取beanDefinition可以看作是一種行為,BeanFactory則完成了對這些行為的定義。那麼子介面又是做...

莫霍介面能被地質運動帶出地表嗎?

大岑智庫 如果是超級地幔熱柱超強對流活動突破了岩石圈層的圈閉封藏而產生超級熔岩流噴溢活動,這樣的地質突變事件 地質運動 的話,應該會把其帶出地表 莫霍面是有在地表出露的,比如下地殼剖面。前面人都在說蛇綠岩套,這東西爭議比較大而且針對大洋。最被認可的莫霍面是義大利的Ivrea zone下地殼剖面,從角...

Java中的Get和Set方法有什麼實際意義?

不知名 因為一般情況下,對成員變數的使用沒有任何限制。不過有時候我們希望發布的物件能夠按照自己的規則進行發布 public class Demo private String strings new String A B C public String getStringsreturn Arrays...