📜  Solidity-构造函数

📅  最后修改于: 2020-11-04 04:29:03             🧑  作者: Mango


 

构造函数是使用构造函数关键字声明的特殊函数。这是一个可选功能,用于初始化合同的状态变量。以下是构造函数的关键特征。

  • 合同只能有一个构造函数。
  • 创建合同后,构造函数代码将执行一次,并用于初始化合同状态。
  • 执行构造函数代码后,最终代码将部署到区块链。该代码包括公共功能和可通过公共功能访问的代码。最终代码中不包括构造函数代码或仅由构造函数使用的任何内部方法。
  • 构造函数可以是公共的,也可以是内部的。
  • 内部构造函数将合同标记为抽象。
  • 如果未定义构造函数,则合同中将包含默认构造函数。
pragma solidity ^0.5.0;

contract Test {
   constructor() public {}
}
  • 万一基本合同的构造函数带有参数,则每个派生合同都必须传递它们。
  • 基本构造函数可以使用以下方式直接初始化-
pragma solidity ^0.5.0;

contract Base {
   uint data;
   constructor(uint _data) public {
      data = _data;   
   }
}
contract Derived is Base (5) {
   constructor() public {}
}
  • 基本构造函数可以使用以下方式间接初始化-
pragma solidity ^0.5.0;

contract Base {
   uint data;
   constructor(uint _data) public {
      data = _data;   
   }
}
contract Derived is Base {
   constructor(uint _info) Base(_info * _info) public {}
}
  • 不允许使用直接和间接方式初始化基本合约构造函数。
  • 如果派生合同未将参数传递给基本合同构造函数,则派生合同将变为抽象。