坚固性构造函数语法



查看OpenZeppelin教程,我看到了以下代码片段:

pragma solidity ^0.8.0;
import "@openzeppelin/contracts/token/ERC721/ERC721.sol";
contract GameItem {
    constructor() ERC721("GameItem", "ITM") {}

构造函数中允许在constructor()之后传入类实例的语法是什么?我似乎在Solidity文档

中找不到任何参考。

调用父类构造函数,在本例中父类命名为ERC721。这与在其他语言中调用super.constructor()parent.constructor()相同。

为了调用父构造函数,你的契约需要实际继承它:

contract GameItem is ERC721 {

Solidity支持从多个父节点继承。这就是为什么不能只使用模棱两可的关键字,如parent。通过显式地声明父类名,您可以指定要将哪些值传递给哪个父类:

pragma solidity ^0.8;
contract Parent1 {
    constructor(string memory message1) {}
}
contract Parent2 {
    constructor(string memory message2) {}
}
contract Child is Parent1, Parent2 {
    constructor() Parent1("hello") Parent2("world") {}
}

文档:https://docs.soliditylang.org/en/v0.8.13/contracts.html arguments-for-base-constructors