5 构造器没有参数,但是却传了参数进去

这个代码来自solidity的官方文档

abstract contract Config {
       function lookup(uint id) public virtual returns (address adr);
}
contract Named is Owned, Destructible {
       constructor(bytes32 name) {
           Config config = 
              Config(0xD5f9D8D94886E70b06E474c3fB14Fd43E2f23970);
           NameReg(config.lookup(1)).register(name);
}

可以看到,Config合约的构造器并没有写明可以传参数进去,但是在Named合约里初始化Config合约实例的时候却传了参数进去,这是为什么呢?

请先 登录 后评论

最佳答案 2022-05-09 08:38

Config(0xD5f9D8D94886E70b06E474c3fB14Fd43E2f23970) 不是初始化Config合约实例, 而是进行类型转换, 将一个地址转换为 Config 抽象合约类型,以便调用lookup函数。

请先 登录 后评论

其它 1 个回答

steel
请先 登录 后评论
  • 2 关注
  • 0 收藏,1948 浏览
  • 提出于 2022-05-08 23:49