超馳要求是:
1對於非重載方法,不能添加override關鍵字,否則會發生編譯錯誤。
2對於重載方法,必須使用override關鍵字;如果想隱藏基類中的方法,需要使用new關鍵字。
3配合IDE,只要在Visual Studio.Net中輸入override和space,就可以自動列出基類中所有重載的方法。
在這方面,我覺得借助C++的typedef、template或者macro函數,也許可以模擬override keyword的功能。
我的壹個不成形的想法是:
1將virtual定義為VIRTUAL,然後將編寫的虛函數名稱定義為非法,直接在子類中重載會導致編譯時錯誤。
2定義OVERRIDE,首先檢查重載函數名是否有非法定義,如果沒有,則定義非法結果,導致編譯時錯誤,使OVERRIDE關鍵字不能應用於非重載函數。
如果有非法定義,讓它先取消被重載的函數名的非法定義,然後正常重載,再非法重定義壹次,這樣虛函數就可以正確重載了。
但是還是有壹些問題,就是在編寫重載函數的實現,調用這樣聲明的函數時會出現壹些問題,因為對應的函數名已經被定義為非法,不能直接使用。可能需要更復雜的宏定義來解決它。
想法是這樣,但是具體實施起來問題很多。我還沒有實驗成功,所以我把我的想法保存在這裏,以備將來參考。