※ 引述《Hitmear (屍殌化液)》之銘言:
: virtual 這關鍵字是為了polymorphism
: 能夠在run-time的時後執行對的derive function
: static 這關鍵字冠在function前是為不用產生instance即可使用
: 從字面上來看這兩者是有點衝突的
: 事實上,擺在一起也的確會得到一個compiler error
: 請問有做法可以滿足讓function 又是virtual 又是static嗎?
: -----
(C++ 這兩個修飾字不能並用 so 以下都是幻想文...)
virtual強制繼承的class必須實作該method才能 instance化
static修飾 method,該method轉成class method,
需要藉由class才能使用
當virtual和static同時修飾一個method,
(幻想) 表示 該method需要透過class才能access
同時 因為是virtaul method, so 原本class不能直接被access
需要透過先用一個class強制繼承該class, 同時 必須實作該method
這樣才能使用 class method.
一個簡單的case
class VirtualSystem{
public:
static virtual doAction();
}
這裡的 VirtualSystem 顯示
他只有一個class method, 而且還沒有被實作
當一個class繼承VirtualSystem
class System: public VirtualSystem{
public:
static doAction(){}
}
這邊的doAction()就必須有implement 否則compile error
如果需要call該method 必須透過System
System.doAction();
類似這樣才能work...
--
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.166.112.203