初始化

C++ 静态对象

独自空忆成欢 提交于 2020-02-22 19:03:09
一:什么是静态对象? 对象的存储方式是静态的。 局部静态对象和类的静态对象。 局部静态对象:一个变量在函数内部定义,其生命周期跨越了该函数的多次调用。局部对象确保不迟于在程序执行流第 一次经过该对象的定义语句时进行初始化。这样的对象一旦被创建,在程序结束之前都不会销毁。在定义局部静态对象的函数执行完毕后,该静态对象不会撤销。当该函数被多次调用的过程中,静态局部对象会持续存在并保存它的值。 静态成员对象:静态成员对象存储在全局存储区,静态成员对象的作用域在类的作用域中。其可以避免与其他类成员或全局对象名字冲突。可以封装为私有的,而全局对象不可以。 二:定义及初始化 允许对构造类静态局部量赋初值。若未赋以初值,则由系统自动赋值。数值型变量自动赋初值0,字符型变量赋空字符。 对基本类型的静态局部变量若在说明时未赋以初值,则系统自动赋予0值。而对自动变量 不赋初值,则其值是不定的。 局部静态对象: int fun(int i){ static int a = 10; a = a+i; return a;}int main(int argc, char *argv[]){ for(int i=0;i<3;i++) { cout <<fun(i)<<endl; }} 静态类成员对象 声明 :类的静态成员变量声明前加static,其也遵守公有/私有访问规则。 因为 static

python基础练习,循环、列表、字典、数组

北城以北 提交于 2020-02-22 18:33:47
# encoding: utf-8 ''' @author: mark @file: 20200214.py @time: 2020/2/14 14:21 @software: PyCharm ''' ''' #初始学习python print("hello word") #打印hello word price = 10 #初始化变量price rating = 4.9 #初始化变量rating name = "mark" #初始化变量name is_published = False #初始化变量is_published print(price) #打印price ''' ''' #控制台输入使用 name = input('what is your name? ') #控制台输入值赋值给name favorite_color = input("what is your favorite color ? ") #控制台输入值赋值给favorite_color print("Hi " + name + "your facorite_color " + favorite_color) #打印Hi name your facorite_color favorite_color ''' ''' #控制台输入使用 birth_year = input("Birth year: ")

单实例中对静态成员函数及变量的回顾

冷暖自知 提交于 2020-02-22 18:31:45
程序最终都将在内存中执行,变量只有在内存中占有一席之地时才有被访问的可能,除此之外,还要有相应的权限。 静态成员函数和非静态成员函数的一个重大区别是,静态成员函数不接受隐含的this指针,它是属于类的,是公有的,因此,静态成员是类的所有对象中共享的成员,而不是某个对象的成员;非静态成员函数带有隐含的this指针,它是属于对象的。 类的静态成员(变量和方法)属于类本身,在类加载的时候就会分配内存,存储在静态存储区,可以通过类名直接去访问;非静态成员(变量和方法)属于类的对象,所以只有在类的对象产生(创建类的实例)时才会分配内存,存储在栈区,可通过类的对象(实例)去访问。 在一个类的静态成员中去访问其非静态成员之所以会出错是因为在类的非静态成员要等对象实例化之后才会存在,此时可能会访问一个内存中不存在的东西,因此会出错; 此外,即使此时对象已经实例化,非静态成员已经存在,静态成员函数依然不能访问非静态成员,这就是权限问题,如果一定要访问,可通过对象参数进行传递。 由上可知:使用静态数据成员可以节省内存,因为它是所有对象所公有的,因此,对多个对象来说,静态数据成员只存储一处,供所有对象共用。静态数据成员的值对每个对象都是一样,但它的值是可以更新的。只要对静态数据成员的值更新一次,保证所有对象存取 更新后的相同的值,这样可以提高时间效率。 静态数据成员的使用方法和注意事项如下: 1

C++类中静态变量和静态方法使用介绍

早过忘川 提交于 2020-02-22 18:31:16
静态成员的提出是为了解决数据共享的问题。实现共享有许多方法,如:设置全局性的变量或对象是一种方法。但是,全局变量或对象是有局限性的。这一章里,我们主要讲述类的静态成员来实现数据的共享。   静态数据成员   在类中,静态成员可以实现多个对象之间的数据共享,并且使用静态数据成员还不会破坏隐藏的原则,即保证了安全性。因此,静态成员是类的所有对象中共享的成员,而不是某个对象的成员。   使用静态数据成员可以节省内存,因为它是所有对象所公有的,因此,对多个对象来说,静态数据成员只存储一处,供所有对象共用。静态数据成员的值对每个对象都是一样,但它的值是可以更新的。只要对静态数据成员的值更新一次,保证所有对象存取更新后的相同的值,这样可以提高时间效率。   静态数据成员的使用方法和注意事项如下:   1、静态数据成员在定义或说明时前面加关键字static。//静态变量的定义   2、静态成员初始化与一般数据成员初始化不同。静态数据成员初始化的格式如下:     <数据类型><类名>::<静态数据成员名>=<值> //静态变量的初始化   这表明: (1) 初始化在类体外进行,而前面不加static,(这点需要注意)以免与一般静态变量或对象相混淆。   (2) 初始化时不加该成员的访问权限控制符private,public等。   (3) 初始化时使用作用域运算符来标明它所属类,因此

JVM解毒——类加载子系统

我的未来我决定 提交于 2020-02-22 12:39:07
带着问题,尤其是面试问题的学习才是最高效的。加油,奥利给! 点赞+收藏 就学会系列,文章收录在 GitHub JavaEgg ,N线互联网开发必备技能兵器谱 直击面试 看你简历写得熟悉JVM,那你说说类的加载过程吧? 我们可以自定义一个String类来使用吗? 什么是类加载器,类加载器有哪些? 多线程的情况下,类的加载为什么不会出现重复加载的情况? 什么是双亲委派机制?它有啥优势?可以打破这种机制吗? 类加载子系统 类加载机制概念 Java虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的加载机制 。Class文件由类装载器装载后,在JVM中将形成一份描述Class结构的元信息对象,通过该元信息对象可以获知Class的结构信息:如构造函数,属性和方法等,Java允许用户借由这个Class相关的元信息对象间接调用Class对象的功能,这里就是我们经常能见到的Class类。 类加载子系统作用 类加载子系统负责从文件系统或者网络中加载class文件,class文件在文件开头有特定的文件标识(0xCAFEBABE) ClassLoader只负责class文件的加载。至于它是否可以运行,则由Execution Engine决定 加载的类信息存放于一块称为方法区的内存空间。除了类的信息外

实现MyRedux(三)

两盒软妹~` 提交于 2020-02-22 12:26:27
实现MyRedux系列 实现MyRedux(一) 实现MyRedux(二) 实现MyRedux(三) 现在通过前边两部分,我们实现了一个通用的 createStore : function createStore ( state , stateChanger ) { const listeners = [ ] const subscribe = ( listener ) => listeners . push ( listener ) const getState = ( ) => state const dispatch = ( action ) => { state = stateChanger ( state , action ) // 覆盖原对象 listeners . forEach ( ( listener ) => listener ( ) ) } return { getState , dispatch , subscribe } } 那他怎么用呢? let appState = { title : { text : 'React.js' , color : 'red' , } , content : { text : 'React.js 内容' , color : 'blue' } } function stateChanger ( state , action

ConcurrentHashMap源码分析

隐身守侯 提交于 2020-02-22 11:48:17
ConcurrentHashMap解决了HashMap的线程不安全问题,在分析之前先介绍一个将HashMap线程安全的方法。利用 Collections.synchronizedMAp方法 调用内部类 SynchronizedMap HashMap<String, String> map = new HashMap<>(); Map m = Collections.synchronizedMap(map); private static class SynchronizedMap<K,V> implements Map<K,V>, Serializable { private static final long serialVersionUID = 1978198479659022715L; private final Map<K,V> m; // Backing Map final Object mutex; // Object on which to synchronize SynchronizedMap(Map<K,V> m) { this.m = Objects.requireNonNull(m); mutex = this; } SynchronizedMap(Map<K,V> m, Object mutex) { this.m = m; this.mutex =

在 JQuery Mobile 中实现瀑布流图库布局

强颜欢笑 提交于 2020-02-22 08:24:59
先来看在Windows系统的1080P显示器中显示的效果: 这个整合方式几乎没有现存的实例,是自己总结出来的方法,在此记录下来。 首先访问Masonry官网下载 masonry.pkgd.min.js : http://masonry.desandro.com/ 将其整合到项目中,在页面中引入。 初始化id变量,让页面每次加载时的id都不同,避免 Ajax 加载时id重复造成难以察觉的错误。 var id = "gallerycontent" + Guid.NewGuid(); 采用HTML初始化方式进行初始化: <div id="@id" style="margin: 50px auto;" class="js-masonry" data-masonry-options='{ "isFitWidth": true, "itemSelector": ".post" }'> .... .... .... </div> 以上为外部容器代码。id属性使用前面的变量;style属性和后面的isFitWidth选项共同实现了容器自动水平方向居中功能;我没有像Masonry入门教程那样指定列宽选项,我觉得貌似对我的项目没什么用,通过css盒模型即可较好地控制图片区块的列宽和间距。 内部图片区块的伪代码: <div class="post" style="height:@(260/1.0

MySQL 8.0.11 报错[ERROR] [MY-011087] Different lower_case_table_names settings for server ('1')

懵懂的女人 提交于 2020-02-22 05:12:57
--报错信息: 2018-06-07T19:52:26.943083+08:00 0 [System] [MY-010116] [Server] /usr/local/mysql/bin/mysqld (mysqld 8.0.11) starting as process 37992 100 200 100 200 2018-06-07T19:52:31.581790+08:00 1 [ERROR] [MY-011087] [Server] Different lower_case_table_names settings for server ('0') and data dictionary ('1'). 2018-06-07T19:52:31.582111+08:00 0 [ERROR] [MY-010020] [Server] Data Dictionary initialization failed. 2018-06-07T19:52:31.582140+08:00 0 [ERROR] [MY-010119] [Server] Aborting 2018-06-07T19:52:33.348638+08:00 0 [System] [MY-010910] [Server] /usr/local/mysql/bin/mysqld: Shutdown complete

VUE生命周期的理解

為{幸葍}努か 提交于 2020-02-22 03:52:22
Vue有一套完整的生命周期,也就是从开始创建、初始化数据、编译模板、挂载Dom、渲染→更新→渲染、销毁等一系列过程,都属于Vue的生命周期。Vue实例从创建到销毁的过程,就像一条生命的生老病死的过程,就是Vue的生命周期。 每一个组件或者实例都会经历一个完整的生命周期,总共分为三个阶段:初始化、运行中、销毁。 实例、组件通过new Vue() 创建出来之后会初始化事件和生命周期,然后就会执行beforeCreate钩子函数,这个时候,数据还没有挂载呢,只是一个空壳,无法访问到数据和真实的dom,一般不做操作 挂载数据,绑定事件等等,然后执行created函数,这个时候已经可以使用到数据,也可以更改数据,在这里更改数据不会触发updated函数,在这里可以在渲染前倒数第二次更改数据的机会,不会触发其他的钩子函数,一般可以在这里做初始数据的获取 接下来开始找实例或者组件对应的模板,编译模板为虚拟dom放入到render函数中准备渲染,然后执行beforeMount钩子函数,在这个函数中虚拟dom已经创建完成,马上就要渲染,在这里也可以更改数据,不会触发updated,在这里可以在渲染前最后一次更改数据的机会,不会触发其他的钩子函数,一般可以在这里做初始数据的获取 接下来开始render,渲染出真实dom,然后执行mounted钩子函数,此时,组件已经出现在页面中,数据