C 如何簡單高效把不同的簽名函式作為事件

時間 2021-05-30 16:32:01

1樓:王銳

delphi裡面也不是虛函式,是動態函式。不會引起體積增大,但效率比函式要差一絲。

實際上cpp也可以做成類似動態函式的方式,不過要自己實現。

2樓:徐辰

繼承也可以繞開虛函式啊,舉個例子:

struct Base { void operator()(int n) conststruct Overload1:Base { void operator()(double n) conststruct Overload2:Overload1 { void operator()(std::

string n) constOverload2 func;

func(10); // Base::operator()

func(4.2); // Overload1::operator()

func("abc"); // Overload2::operator()

再加上點TMP trick就能搞pattern match了,而且全部是直接函式呼叫,連虛函式的開銷都沒有。

3樓:yc znone

用std::function也可以達到目的,但肯定比虛函式更慢。

其實在所有執行時動態繫結的方法中,虛函式是代價最小的,只比普通函式多一次函式指標操作就可以了。

4樓:丁冬

既然你想在執行期確定型別,那相當於虛函式的開銷是省不了的。如果嫌boost::any開銷太大,但可能用到的型別數量有限,可以考慮boost::variant

c 中 不同 namespace 的變數及函式查詢是怎樣設計的?

能找到test是由於test含有乙個型別S1的引數,所以會在S1所在的命名空間中尋找函式test。這種查詢方式叫做Argument dependent lookup或者Koenig lookup。Argument dependent lookupThese function names are lo...

如何簡單高效的除掉濕氣?

直接來說經過兩周的健脾去溼養胃,我身體上的變化 1.大便成形 2.舌苔變薄,齒痕沒那麼尖銳了 3.睡覺變好了 4.口臭沒有了 5.腹部瘦了,小腿比以前直,屁股比以前翹 6.最重要的,心情好了!下雨天都覺得無比浪漫。1.了解自己的身體從上班開始,可能是以前不好的生活習慣導致身體素質越來越差 經常拉肚子...

C語言有沒有簡單的方法,能讓函式中執行return之後,再次再執行另外一段命令?

典型的AOP操作。比較有共識的實現方式是函式巢狀來實現,就是外函式做你說的那些額外功能,內函式實現主要的計算邏輯。當然c的話還可以用巨集等奇技淫巧。但是你說簡單的話那估計不行 gcc 可以用 attribute cleanup fn int var 實現。這個類似於給 var 加了個析構函式 fn。...