Solidity

在派生合約中聲明具有相同名稱但參數不同的函式

  • January 18, 2021

如果在基礎合約中聲明一個與函式同名但在派生合約中具有不同參數的函式,會發生什麼?

virtual它在修飾符的存在/不存在的不同組合下表現如何?

不同版本的 Solidity 有什麼?

從solidity編譯器來看,它們是完全不同的功能。

在執行時,函式由它們的 4 字節選擇器標識。函式選擇器是根據函式名稱和參數類型(函式選擇器)計算得出的。如果函式名稱保持不變但參數發生變化,則選擇器很可能會有所不同。

virtual 修飾符指示哪些函式可以被覆蓋。它不會更改功能選擇器。

用於計算選擇器的算法是 ABI 的一部分,不依賴於所使用的solidity 版本。未來可能會發生變化,但這種選擇似乎不太可能。

引用自:https://ethereum.stackexchange.com/questions/92401