Solidity构造函数和析构函数
构造函数:当方法名字和合约名字相同的时候,这个就是构造函数,构造函数在合约对象创建之后执行的
contract Person{
function Peron(){//构造函数Person
...
}
}
析构函数:selfdestruct
selfdestruct(msg.sender)//析构函数
pragma solidity ^0.4.;//首先第一个是版本的申明
/*
pragma;版本申明
solidity:开发语言
0.4.13:当前合约的版本,0。4代表的是主版本,.13代表的修复bug的升级版
^代表的是向上兼容的意思,0.4.13`0.4.9可以对我们当前的代码进行编译
*/ //contrace person类似 class person extends contract
contract Person {
uint _height;//属性名加下划线,代表的是一种规范,编译代码的时候的一种规范
uint _age;//年龄,无符号整形 //当方法名和合约名相同时就属于构造函数,在创建对象的时候,构造函数会最先被调用
function Person() {
_height=;
_age=;
address _owner;//合约的拥有者
} //标准的形式来写,驼峰的形式来写setHight
function setHight(uint height) {
_height=height;
_owner=msg.sender;
}
//度去_height,如果后面不加上constant的话,那么要调用call方法才可以,如果加上了call方法的话,那么就不需要加上call方法就可以取出来
function gteHeight() constant returns (uint) {//返回的是什么类型,后面不用加什么东西
return _height;//return,_height加不加上括号都可以
} function kill() {//如果后面加上constant的时候,刚创建就会把他销毁掉了
if (_owner==msg.sender){
//析构函数
selfdestruct(msg.sender);//msg代表的是全局,selfsdestruct这个是析构函数
}
} function owner() constant returns (address) {//返回的是地址的类型
return _owner; }
} //每一个合约都有一个地址
//在执行这个合约对象的时候,会先去创建判断这些带constant的方法
Solidity在线编辑工具:https://remix.ethereum.org/
从这里可以看到这个合约的详细信息:
合约地址:当合约内容相同的饿时候,那么这个合约地址也是相同的,0x692a70d2e424a56d2c6c27aa97d1a86395877b3a
cost:创建这个合约所消耗的gas,不管创建合约对象或者是执行合约里面的方法的时候都会消耗gas值
ABI:可以去https://www.bejson.com/转化为JOSN的格式
Solidity构造函数和析构函数的更多相关文章
- .NET 基础 一步步 一幕幕[面向对象之构造函数、析构函数]
构造函数.析构函数 构造函数: 语法: //无参的构造函数 [访问修饰符] 函数名() :函数名必须与类名相同. //有参的构造函数 [访问修饰符] 函数名(参数列表):函数名必须与类名相同. 作用: ...
- 不可或缺 Windows Native (21) - C++: 继承, 组合, 派生类的构造函数和析构函数, 基类与派生类的转换, 子对象的实例化, 基类成员的隐藏(派生类成员覆盖基类成员)
[源码下载] 不可或缺 Windows Native (21) - C++: 继承, 组合, 派生类的构造函数和析构函数, 基类与派生类的转换, 子对象的实例化, 基类成员的隐藏(派生类成员覆盖基类成 ...
- C++构造函数、析构函数与抛出异常
[本文链接] http://www.cnblogs.com/hellogiser/p/constructor-destructor-exceptions.html [问题] 构造函数可以抛出异常么?析 ...
- python中的构造函数和析构函数
python中的特殊方法,其中两个,构造函数和析构函数的作用: 比说“__init__”这个构造函数,具有初始化的作用,也就是当该类被实例化的时候就会执行该函数.那么我们就可以把要先初始化的属性放到这 ...
- 内存的分配VS回收&构造函数VS析构函数
之前有一个问题一直困扰着我,就是一个变量出了作用域,我以为这个变量的内存就被回收了,其实不是这样的,昨天问了一个高手,才豁然开朗,自己在看相关代码的反汇编代码,才知道原来真是这样就.这个问题,我想简单 ...
- C++C++中构造函数与析构函数的调用顺序
http://blog.csdn.net/xw13106209/article/details/6899370 1.参考文献 参考1: C++继承中构造函数.析构函数调用顺序及虚函数的动态绑定 参考2 ...
- php 的 构造函数 和 析构函数
构造函数 在C++ java里的应用及其普遍,今天好好研究了一下 php 的 构造函数 和 析构函数 构造函数 和 析构函数 构造函数 void __construct ([ mixed $args ...
- C++-理解构造函数、析构函数执行顺序
先初始化序列中的函数调用,如果基类构造函数为非引用传递,则引起参数的拷贝构造 再: 先类内的成员构造函数(拷贝/默认),再类的构造函数:先基类,再派生类: 本文主要说明对象创建时构造函数的执行顺序,对 ...
- C++学习之类的构造函数、析构函数
在C++的类中,都会有一个或多个构造函数.一个析构函数.一个赋值运算操作符.即使我们自己定义的类中,没有显示定义它们,编译器也会声明一个默认构造函数.一个析构函数和一个赋值运算操作符.例如: //声明 ...
随机推荐
- 04 Django REST Framework 认证、权限和限制
目前,我们的API对谁可以编辑或删除代码段没有任何限制.我们希望有更高级的行为,以确保: 代码片段始终与创建者相关联. 只有通过身份验证的用户可以创建片段. 只有代码片段的创建者可以更新或删除它. 未 ...
- Leetcode 88. Merge Sorted Array(easy)
Given two sorted integer arrays nums1 and nums2, merge nums2 into nums1 as one sorted array. Note:Yo ...
- Linux(Ubuntu)使用日记(四)------印象笔记相关使用
在Ubuntu系统下没有印象笔记官方的客户端,但是这并不能阻拦我们使用印象笔记. 我们一般的的使用习惯: 印象笔记客户端 印象笔记剪藏 Linux下也可以使用两个工具,剪藏的话安装比较简单,印象笔记客 ...
- vue独立构建和运行构建
有两种构建方式,独立构建和运行构建.它们的区别在于前者包含模板编译器而后者不包含. 模板编译器:模板编译器的职责是将模板字符串编译为纯 JavaScript 的渲染函数.如果你想要在组件中使用 tem ...
- Python——Flask框架
Flask框架相关知识构架 程序的基本结构 模板 Web表单 数据库 电子邮件 程序的结构 用户认证
- git生成ssh公钥方法--远程连接github仓库
先配置全局的用户名和邮箱 $ git config --global user.name "runoob" $ git config --global user.email tes ...
- Flask 视图,中间件
视图 FBV def index(nid): """ 请求相关信息 request.method # 请求方式 request.args # get 方式的参数获取 re ...
- 【JVM】Java内存模型
原文:多线程之Java内存模型(JMM)(一) 概述 多任务和高并发是衡量一台计算机处理器的能力重要指标之一.一般衡量一个服务器性能的高低好坏,使用每秒事务处理数(Transactions Per S ...
- 「洛谷3292」「BZOJ4568」「SCOI2016」幸运数字【倍增LCA+线性基+合并】
[bzoj数据下载地址]不要谢我 先讲一下窝是怎么错的... \(MLE\)是因为数组开小了.. 看到异或和最大,那么就会想到用线性基. 如果不会线性基的可以参考一下我的学习笔记:「线性基」学习笔记a ...
- intellij 操作
默认快捷键 ctrl+alt+l 格式化代码 alt+insert代码自动生成 代码生成 编辑框右键>generator>选择