初始化

[C++] 构造函数

雨燕双飞 提交于 2020-02-04 20:24:36
构造函数 每个类都分别定义了它的对象被初始化的方式,类通过一个或几个特殊的成员函数来控制其对象的初始化过程,这些函数叫做构造函数。 构造函数的任务是初始化类对象的数据成员,无论何时只要类的对象被创建,就会执行构造函数。 构造函数的名字和类名相同。和其他函数不一样的是,构造函数没有返回类型;除此之外类似于其他的函数,构造函数也有一个(可能为空)参数列表和一个(可能为空的)函数体。 类可以包含多个构造函数,和其他重载函数差不多,不同的构造函数之间必须在参数数量或参数类型上有所区别。 构造函数不能被声明成const的。当我们创建类的一个const对象时,直到构造函数完成初始化过程,对象才能真正取得其“常量”属性。因此,构造函数在const对象的构造过程中可以向其写值。 合成的默认构造函数 类通过一个特殊的构造函数来控制默认初始化过程,这个函数叫做默认构造函数。默认构造函数无须任何实参。 如果我们的类没有显式地定义构造函数,那么编译器就会为我们隐式地定义一个默认构造函数,这个构造函数又被称为合成的默认构造函数。 这个合成的默认构造函数的初始化数据成员规则是: 1、如果存在类内的初始值,用它来初始化成员。 2、否则,默认初始化该成员 某些类不能依赖于合成的默认构造函数 对于一个普通的类来说,必须定义它自己的默认构造函数,原因有三: 1

变量详解

我们两清 提交于 2020-02-04 19:13:52
Java变量有且仅有成员变量和局部变量 类中定义成员变量:类变量(有static)、实例变量(无static) 方法中定义局部变量:形参、普通局部变量、代码块的局部变量 判断变量:先看位置,然后看static 一、局部变量 局部变量:必须由程序员显示指定初始值,然后才能使用,否则编译报错–可能未初始化变量**。 代码块的作用于很小:离开了代码块,代码块中的局部变量就失效 局部变量的作用域很小,只在方法里有效;离开了方法,局部变量立即失效。 二、成员变量 成员变量:可以不需要显示指定初始值,系统可以自动分配初始值;初始值规则与数组元素的初始值规则完全相同。 程序中,类本身只有一个,程序一定先有类,再有对象(实例)! 类变量:类变量属于类本身,当系统初始化类时,就会为类分别分配空间,并执行初始化。 实例变量:实例变量属于对象本身,系统每次创建对象时,都需要为该对象的实例变量分配空间,并执行初始化。 严格来说:类变量应该由类本身进行访问;实例变量应该由对象进行访问。但Java语法允许通过对象访问类变量----唯一的作用是出考题。但实际上,Java依然会将对象替换成对象所属的类。 建议:遇到用类调用类变量、类方法。如果遇到对象调用类变量、类方法的情况,第一件事先把对象换成类。 public class Computer { String color ; //实例变量 int price ;

servlet的调用流程

与世无争的帅哥 提交于 2020-02-04 18:52:09
假设在login页面有一个form表单,表单的action="login"。则表单会提交到login路径。 在xml映射中,/login对应的servlet类是LoginServlet,tomcat定位到loginservle后,发现并没有servlet实例存在,于是就调用Loginservlet的构造函数进行实例化对象。根据login.html提交对信息时带的method="post"来调用doPost方法 运用request把对应信息提取后,设置了response对象。tomcat拿到被servlet修改过的response,根据这个response生成html字符串,然后返回给浏览器。 在dopost和doget方法执行之前会先调用service()方法来判断接下来是调用dopost还是doget, 转发 response.sendRedirect( "fail.html" ); 和 重定向 request.getRequestDispatcher( "success.html" ).forward(request, response); 的区别 其中重定向地址栏改变并且请求两次并不保留第一次的数据 而转发则地址栏改变请求一次保留第一次的数据 有时候会需要tomcat'启动的时候就要执行一些初始化代码,比如校验数据库的完整性等

Go 系列教程 —— 7. 包

落爺英雄遲暮 提交于 2020-02-04 16:56:32
什么是包,为什么使用包? 到目前为止,我们看到的 Go 程序都只有一个文件,文件里包含一个 main 函数和几个其他的函数。在实际中,这种把所有源代码编写在一个文件的方法并不好用。以这种方式编写,代码的重用和维护都会很困难。而包(Package)解决了这样的问题。 包用于组织 Go 源代码,提供了更好的可重用性与可读性 。由于包提供了代码的封装,因此使得 Go 应用程序易于维护。 例如,假如我们正在开发一个 Go 图像处理程序,它提供了图像的裁剪、锐化、模糊和彩色增强等功能。一种组织程序的方式就是根据不同的特性,把代码放到不同的包中。比如裁剪可以是一个单独的包,而锐化是另一个包。这种方式的优点是,由于彩色增强可能需要一些锐化的功能,因此彩色增强的代码只需要简单地导入(我们会在随后讨论)锐化功能的包,就可以使用锐化的功能了。这样的方式使得代码易于重用。 我们会逐步构建一个计算矩形的面积和对角线的应用程序。 通过这个程序,我们会更好地理解包。 main 函数和 main 包 所有可执行的 Go 程序都必须包含一个 main 函数。这个函数是程序运行的入口。main 函数应该放置于 main 包中。 package packagename 这行代码指定了某一源文件属于一个包。它应该放在每一个源文件的第一行。 下面开始为我们的程序创建一个 main 函数和 main 包。 在 Go

从C#到Python —— 4 类及面向对象

▼魔方 西西 提交于 2020-02-04 13:18:08
如果你熟悉C#,那么对类(Class)和面向对象(Object Oriented)应该不会陌生。Python与C#一样,能够很好地支持面向对象的编程模式。本章对Python中面向对象编程的基本知识进行介绍,并将其与C#中的对应部分进行比较。 4.1 类的定义与实例化 4.1.1 类的定义 与C#一样,Python使用class关键字定义一个类。一个最简单的类定义语句如下: 1 class A:2 pass 它等价于C#中的 class A{}。当然,以上语句没有任何实际意义,它只是告诉我们什么是定义一个类所必需的,即:class关键字,类名和冒号,pass关键字只用来占位,相当于C#中花括号的作用。 4.1.2 类的实例化 类是定义对象格式的模板,而对象则是类的实例,通过类创建对象的过程称为类的实例化。在C#中,需要使用new关键字实例化一个类,例如 A a = new A(); 在上条语句中,C#完成了两件事情:首先声明一个类型为A的变量a,然后用new运算符创建一个类型为A的对象,并将该对象的引用赋值给变量a。而在Python中没有new关键字,同时它是一种动态语言,不需要事先指定变量的类型,只需要: a = A() 即可创建一个类型为A的对象,看起来好像是将类当作一个函数调用,返回值是新创建的对象。 4.2 类的成员变量 4.2.1 为类添加数据

硬盘显示没有初始化恢复数据法子

落爺英雄遲暮 提交于 2020-02-04 11:54:45
问题描述: 磁盘没有初始化是因为0号扇区损坏,导致可移动磁盘分区表读取不出来,从而可移动磁盘出现磁盘没有初始化。 工具/软件:极限数据恢复软件 步骤1:软件运行后,直接双击需要恢复文件的磁盘。 步骤2:坐等软件扫描完成一般需要几分钟到半个小时,稍微耐心等下即可。 步骤3:软件会很快将找到的资料,软件会将找到的分区列出来。 步骤4:选中所有需要恢复的文件,右击选择《复制选中的文件》,软件会将勾选的文件COPY出来。 步骤5:最后一步只需坐等软件将数据拷贝完毕就好了 。 注意事项1:想要恢复磁盘没有初始化需要注意,在数据找回之前,不要重建新的分区。 注意事项2:磁盘没有初始化恢复出来的资料需要暂时保存到其它盘里。 来源: 51CTO 作者: tksd 链接: https://blog.51cto.com/13458098/2469044

JavaWeb学习之Servlet(四)----ServletConfig获取配置信息、ServletContext的应用

◇◆丶佛笑我妖孽 提交于 2020-02-04 11:18:39
【声明】 欢迎转载,但请保留文章原始出处→_→ 文章来源: http://www.cnblogs.com/smyhvae/p/4140877.html 【正文】 一、ServletConfig :代表当前Servlet在web.xml中的配置信息( 用的不多 ) String getServletName() -- 获取当前Servlet在web.xml中配置的名字 String getInitParameter(String name) -- 获取当前Servlet指定名称的初始化参数的值 Enumeration getInitParameterNames() -- 获取当前Servlet所有初始化参数的名字组成的枚举 ServletContext getServletContext() -- 获取代表当前web应用的ServletContext对象 在Servlet的配置文件中,可以使用一个或多个<init-param>标签为servlet配置一些初始化参数。 当servlet配置了初始化参数后,web容器在创建servlet实例对象时,会自动将这些初始化参数封装到ServletConfig对象中,并 在调用servlet的init方法时,将ServletConfig对象传递给servlet 。进而

Java(2)数组

╄→尐↘猪︶ㄣ 提交于 2020-02-04 10:26:04
数组 数组的定义 1.数组:是一种容器,可以存放多个数据值 2.特点:数组是一种引用数据类型,类型必须统一 3.数组的长度在程序运行中不能改变 数组的初始化 1.动态初始化: 指定长度: 数据类型[ ] 数组名称 = new 数据类型[数组长度] int [ ] arr = new int [ 3 ] 2.静态初始化: 指定内容: 数据类型[ ] 数组名称 = new 数据类型[ ] {元素1,元素2,。。。} int [ ] arr = new int [ ] { 1 , 2 , 3 , 4 , 5 } 使用静态初始化,格式可以省略:数据类型[ ] 数组名称 = {元素1,元素2,。。} int [ ] arr = { 1 , 2 , 3 , 4 , 5 } 数组的访问 1.直接打印数组名称,得到的是数组对应的:内存地址哈希值 int [ ] array = { 10 , 20 , 30 } ; System . out . println ( array ) ; //[I@3f99bd52 2.访问素组元素的格式:数组名称[索引值] int [ ] array = { 10 , 20 , 30 } ; System . out . println ( array [ 1 ] ) ; //10 3.在动态初始化数组时,其中的元素拥有一个默认值 整型==》0 浮点型==》0.0

为什么不能在函数中申请大数组?

你说的曾经没有我的故事 提交于 2020-02-04 09:48:11
1. 简而言之,数组定义在函数中时,占用的内存来自栈空间,栈空间是在进程创建时初始化的,有固定的大小,一般很小,所以太大的数组会耗光栈空间。全局变量一般分配在数据段,可以比较大。 2.BBS段、数据段、代码段、堆与栈及5大内存分配 BSS段(Block Started by Symbol): BSS段(bss segment)通常是指用来存放程序中未初始化的全局变量的一块内存区域。BSS段属于静态内存分配。 数据段: 数据段(data segment)通常是指用来存放程序中已初始化的全局变量的一块内存区域。数据段属于静态内存分配。 代码段: 代码段(code segment/text segment)通常是指用来存放程序执行代码的一块内存区域。这部分区域的大小在程序运行前就已经确定,并且内存区域通常属于只读, 某些架构也允许代码段为可写,即允许修改程序。在代码段中,也有可能包含一些只读的常数变量,例如字符串常量等。 堆(heap): 堆是用于存放进程运行中被动态分配的内存段,它的大小并不固定,可动态扩张或缩减。当进程调用malloc等函数分配内存时,新分配的内存就被动态添加到堆上(堆被扩张);当利用free等函数释放内存时,被释放的内存从堆中被剔除(堆被缩减) 栈(stack): 栈又称堆栈, 是用户存放程序临时创建的局部变量,也就是说我们函数括弧“{}”中定义的变量

Netty源码解析(一)初始化

梦想的初衷 提交于 2020-02-04 07:52:17
Netty运行整体流程: 以后的讲究都会按着这幅图来理解 1.对NioEventLoopGroup的整体流程 从第一行代码分析 EventLoopGroup bossGroup=new NioEventLoopGroup(1);//cpu核心数*2 EventLoopGroup workerGroup=new NioEventLoopGroup(); //cpu核心数*2 看NioEventLoopGroup的构造方法 public NioEventLoopGroup(int nThreads) { //这里给Executor赋值为null this(nThreads, (Executor) null); } 继续往里面跟 public NioEventLoopGroup(int nThreads, Executor executor) { //executor默认为null //ServerSocketChannel 就是通过ServerSocketChannel.open()==》SelectorProvider.provider().openServerSocketChannel()创建的 this(nThreads, executor, SelectorProvider.provider()); } 这里可以把SelectorProvider.provider(