Solidity中构造函数参数的传递

315 阅读1分钟

D继承自A、B、C三个合约,在D合约构造器中,接受形参后直接对父合约进行构造的行为称为构造函数参数的传递。

示例代码:

生产者角色

contract Producer {
    constructor (address producer) public {
        // TODO
    }
}

中间商角色

contract Distributor {
    constructor (address  distributor ) public {
        // TODO
    }
}

零售商角色

contract Retailer {
    constructor (address retailer) public {
        // TODO
    }
}

食品溯源合约

contract Trace is Producer, Distributor, Retailer{
    constructor(address producer, address distributor, address retailer) public Producer(producer) Distributor(distributor) Retailer(retailer){
    }
}

上述这种形参接受地址后并在构造函数中使用的行为称为构造函数参数的传递。在这种情况下,构造函数的形参producerdistributorretailer接受了地址类型的参数,并在构造函数体内将这些地址作为参数传递给了基类合约(Producer、Distributor和Retailer)的构造函数。

通过在构造函数参数列表中使用public关键字,这些参数将会被自动初始化为对应地址的值,并且在构造合约时进行传递。这样做可以简化构造函数的实现,使得在部署合约时能够方便地指定合约所需的地址参数。