构造函数

移动构造函数

人走茶凉 提交于 2020-03-05 23:22:32
https://blog.csdn.net/gxb0505/article/details/53572761 如果指针所指向非常大的内存数据的话,则拷贝构造的代价就非常昂贵,会极大地影响性能。C++11提供一种简洁解决方法:移动构造函数,即是在用原对象指针对新对象指针进行赋值后,将原对象成员指针置为空指针,使得其无法指向内存数据,从而保证在析构的时候不会产生内存泄漏。这样既不用分配新内存,也不会产生内存泄漏,从而很好地解决了上述问题。 来源: CSDN 作者: xiaoxiao落木 链接: https://blog.csdn.net/qq_28133013/article/details/104680450

JVM源码分析之不可控的堆外内存

我怕爱的太早我们不能终老 提交于 2020-03-05 13:27:10
概述 之前写过篇文章,关于堆外内存的, JVM源码分析之堆外内存完全解读 ,里面重点讲了DirectByteBuffer的原理,但是今天碰到一个比较奇怪的问题,在设置了-XX:MaxDirectMemorySize=1G的前提下,然后统计所有DirectByteBuffer对象后面占用的内存达到了7G,远远超出阈值,这个问题很诡异,于是好好查了下原因,虽然最终发现是我们统计的问题,但是期间发现的其他一些问题还是值得分享一下的。 不得不提的DirectByteBuffer构造函数 打开DirectByteBuffer这个类,我们会发现有5个构造函数 DirectByteBuffer(int cap); DirectByteBuffer(long addr, int cap, Object ob); private DirectByteBuffer(long addr, int cap); protected DirectByteBuffer(int cap, long addr,FileDescriptor fd,Runnable unmapper); DirectByteBuffer(DirectBuffer db, int mark, int pos, int lim, int cap,int off) 我们从java层面创建DirectByteBuffer对象

总结

不羁的心 提交于 2020-03-05 12:15:52
## 错误总结 这次又暴露了很多问题,让自己的效率低下,总结一下,避免以后再次踩坑。 1.c3p0连接池实体类需要空参构造函数或者不写构造函数,只写了一个全参的构造函数报错。 2.servlet3.0中注解配置需要加"/",不然报错。 3.servlet跳转jsp页面空白:原因就是没有正常跳转,查找发现servlet中doPost没有调用doGet()方法。 4.浏览器缓存害死人。 来源: https://www.cnblogs.com/dongao/p/12411456.html

python类的使用(类定义,构造器,类属性,方法)

走远了吗. 提交于 2020-03-05 09:32:23
注:这里只描述使用方法,具体类的概念长篇大论就不要为难我这个懒人了。 总之一句话编程语言只是一个工具,会用就行,好用就行。打破砂锅问到底,我觉得有必要研究一下C,汇编,电子链路等。 1 class cltdy: #定义类,并起一个名字 2 n = 1000 #类属性,类内的变量 3 def __init__(self,name,age,profession='IT民工'): #构造函数,类接收外部传入参数全靠构造函数 4 self.name = name 5 self.age = age 6 self.profession = profession 7 def printing_name(self): #类的方法 8 print('我的名字是:%s'%self.name) 9 def printing_age(self): 10 print("我的年龄:%s"%self.age) 11 def printing_pfsn(self): 12 print("我的职业:%s"%self.profession) 13 14 test = cltdy('sober',25,'DevOps') #类的实例化,将参数传入类中,传入参数可以多但不可以少于类构造函数的参数(self参数除外,self是将实例化的变量名传入类) 15 print("这是类实例化后的内存地址:%s"%test) 16

javascript中的类型判断

两盒软妹~` 提交于 2020-03-05 07:46:23
typeof 判断变量的类型 typeof返回值对应 类型 返回值 String "string" Number "number" Boolean "boolean" undefined "undefined" Object "object" function "function" Symbol "symbol" typeof 的不足之处: 1、不能区分对象、数组、正则返回的都是“object” 2、Safar,Chrome7之前的版本对正则对象返回的是“function” 3、在IE6、7、8中,大多数的宿主对象是对象,而不是函数 如:typeof alert 注释:宿主对象:window、document,内置对象:Math、Date等;本地对象: 就是自己申明的对象 instanceof判断实例对象的构造函数是谁 实现原理:实例对象的__proto__这个属性,和构造函数的prototype这个属性是不是同一个引用 作用: 判断实例对象的构造函数是谁 function Student ( name ) { this . name = name ; } var stu = new Student ( '张珊' ) console . log ( stu instanceof Student ) ; // true 说明stu就是Student的实例 console . log

理解javascript中的原型模式

你说的曾经没有我的故事 提交于 2020-03-05 07:06:06
一、为什么要用原型模式。 早期采用工厂模式或构造函数模式的缺点: 1.工厂模式: 函数creatPerson根据接受的参数来构建一个包含所有必要信息的person对象,这个函数可以被无数次的调用,工厂模式尽管解决了创建多个相似对象的问题,却没有解决对象识别的问题(返回的是自定义的一个对象o,不明确对象o的类型)。 2. 构造函数模式: 构造函数的调用和其他oo语言一样,用new操作符来构建一个Person的实例;javascript中的构造函数也是函数(所以也可以直接像普通函数那样直接调用方法名)只不过可以用来创建对象,这是和其他oo语言不一样的地方(其他oo语言的构造函数不是函数,不能直接调用方法名,必须用new操作符来创建对象才可以),相同点是构造函数首字母都要大写,非构造函数首字母都是小写。 构造函数模式解决了创建多个相似对象的问题和对象识别的问题,但是不足的地方是,采用这种模式会创建多个完成同样任务的Function实例。 拿上面的例子来分析内存: 此时person1.isName===person2.isName 是为false的 不同实例上的同名函数是不相等的,我们希望有一种方法,即可以解决创建多个相似对象的问题和对象识别的问题,还能让每个实例共享相同的方法。 上面的例子可以做改进将方法提到构造函数的外面,单独写成一个全局函数,this.isName指向一个指针:

快速掌握ES6的class用法

别说谁变了你拦得住时间么 提交于 2020-03-05 04:53:06
1.如何构造? 先复习一下es5常用的构建类的方法: 首先es5的写法使用原型进行对象的方法的,为什么不在构造函数里添加方法呢? 因为实例化对象的时候,会重复的建立好多相同的方法,浪费资源。所以需要把对象的方法挂载到prtotype里。 关于new和this的绑定问题,可以大概简化为: 首先通过new生成一个新的对象 然后让这个对象绑定到构造函数的this中去 然后绑定这个构造对象的原型对象上 最后把这个对象返回给前面定义的对象 那么接下来看例子吧: fuction Animal(name,age){ this.name = name this.age = age // 这样是浪费资源的 // this.eat = function(){ // console.log("今天我吃饭了") // } } // 正确做法 Animal.prototype.eat=function(){ console.log("今天我吃饭了") } 然后上ES6的class,class很明显就简化了这个操作 cosnt dog = new Animal("wangcai",2) // 会报错,ES6为了修改陋习,和let和const一样,class不会提升. class Animal{ constroctor(name,age){ this.name = name this.age = age }

javascript当中的this详解

时光总嘲笑我的痴心妄想 提交于 2020-03-05 01:29:58
总结this的3个规则: this是调用上下文,上下文被创建或者初始化时才确定 非严格模式:this是全局对象;严格模式:this是undefined 函数调用     a. 以函数形式调用的函数通常不使用this关键字,非严格模式下函数调用模式的this就是全局对象。     b. 以方法形式调用的函数的this指的是当前调用方法的对象     c. 以构造函数形式调用的函数的this指的是被构造的对象,具体操作为:       i. 创建一个新对象       ii. 将构造函数的作用域赋给新对象(因此构造函数中的this就指向这个新对象)       iii. 执行构造函数的代码(为这个新对象添加属性,这个时候this才确定下来就是该对象)       iv. 返回新对象       v. 另外要注意的是,构造函数通常不使用return关键字,如果使用,则调用表达式的值就是return的这个对象,如果使用却没有指定返回值,或者返回一个原始值,那么就忽略返回       值,同时使用构造出来的新对象作为返回结果。   4. this是一个关键字,js的语法不允许给this赋值,关键字this没有作用域的限制,嵌套的函数不会从调用它的函数中继承this。即:如果嵌套函数作为方法调用,其this的值指向调用它的对象(与规则3相符合) 如果嵌套函数作为函数调用

构造函数的返回值

坚强是说给别人听的谎言 提交于 2020-03-05 00:16:28
/** 关于构造函数的返回值; 原本以为无论设置返回的东西只返回this, 也就是这个构造对象; return []; 返回此数组 return {}; 返回此对象 return function; 返回此函数 return 1; 返回this; return 'a'; 返回this; return null; 返回this; return undefined; 返回this; return this.functionName; 返回此函数; return this.objectName; 返回此对象; return this.arrayName; 返回此数组 return this.stringName; 返回this; return this.numberName; 返回this; return this.nullName; 返回this; return this.undefinedName; 返回this; */ var lang = function(arg){ return undefined; } lang.prototype = { objectName: {}, functionName: function(){}, arrayName: [1,2,3,4], stringName: 'aaa', numberName: 1234, nullName: null,

学习05-构造函数和原型

余生颓废 提交于 2020-03-04 22:47:35
创建对象可以通过三种方式: 构造函数原型prototype 对象原型_proto_ constructor构造函数 构造函数,实例,原型对象三者之间的关系 原型链 扩展内置对象 继承 call() 来源: oschina 链接: https://my.oschina.net/u/4454049/blog/3188052