浅谈virtual、abstract方法和静态方法、静态变量理解
说点对这几个容易混淆的词的理解:
1、c++中的virtual方法的 virtual关键字主要是防止继承中重复继承父类的同一个方法而设置的标识。
2、virtual与abstract关键字的不同之处在于 virtual方法可以有具体的实现,当子类继承父类的时候若没有覆写该方法,也可以使用父类中的此方法。
但是abstract方法即抽象方法是没有具体实现的,子类需要自己实现。打个比方就是virtual 虚方法 这个 父亲虽然“虚”了点但‘家产'还是有一点的,但老爸是抽象方法这个儿子就悲剧了,什么遗产也没有,因为他老爸的方法是抽象的,并不是“真”的。。。
另:包含抽象方法的类一定是抽象类,抽象类不一定有抽象方法(但也不能实例化)。
额,另外还有一个纯干抽象事儿的 接口。里面只有常量和抽象方法。
3、关于静态方法和静态变量
静态方法是属于类的,内存必须为它分配内存空间,这个空间一直由静态方法占用,内存管理器不会由于静态方法没有被调用而将静态方法的存储空间收回,这样如果将所有的方法都声明为静态方法,就会占用大量的内存空间,最后是系统变慢。而普通的成员方法是由对象调用的,内存并不会一直为起分配内存,只有调用的时候才为其分配存储空间,而当其没有被调用时,存储空间就会被内存管理其收回,释放没有用的空间,提高的系统的运行速率!希望对楼主有帮助!
具体百度, 另: 静态方法的典型用法就是单例模式。另外基于静态方法的特点,我觉得那些需要被频繁调用的方法适合定义成为静态方法。此外,还有单例等特殊用途。
静态变量:static定义的语句只会被执行一次。
以上这篇浅谈virtual、abstract方法和静态方法、静态变量理解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。
相关推荐
-
浅谈virtual、abstract方法和静态方法、静态变量理解
说点对这几个容易混淆的词的理解: 1.c++中的virtual方法的 virtual关键字主要是防止继承中重复继承父类的同一个方法而设置的标识. 2.virtual与abstract关键字的不同之处在于 virtual方法可以有具体的实现,当子类继承父类的时候若没有覆写该方法,也可以使用父类中的此方法. 但是abstract方法即抽象方法是没有具体实现的,子类需要自己实现.打个比方就是virtual 虚方法 这个 父亲虽然"虚"了点但'家产'还是有一点的,但老爸是抽象方法这个儿子就悲剧
-
浅谈Java中方法参数传递的问题
可以理解当我们要调用一个方法时,我们会把指定的数值,传递给方法中的参数,这样方法中的参数就拥有了这个指定的值,可以使用该值,在方法中运算了.这种传递方式,我们称为参数传递.在这里,定义方法时,参数列表中的变量,我们称为形式参数. 调用方法时,传入给方法的数值,我们称为实际参数 在Java中调用方法时,如果参数是基本类型(byte/short/int/long/float/double/char/boolean)以及String类型时,形式参数的改变不影响实际参数. 以下代码在内存中发生的动作:
-
浅谈python字符串方法的简单使用
学习python字符串方法的使用,对书中列举的每种方法都做一个试用,将结果记录,方便以后查询. (1) s.capitalize() ;功能:返回字符串的的副本,并将首字母大写.使用如下: >>> s = 'wwwwww' >>> scap = s.capitalize() >>> scap 'Wwwwww' (2)s.center(width,char); 功能:返回将s字符串放在中间的一个长度为width的字符串,默认其他部分用空格填充,否则使用c
-
浅谈String.valueOf()方法的使用
前面的话 关于类型转换,对象常见的两个方法是toString()和valueOf().实际上,这两个方法也可以应用在包装类型上.前面已经介绍过toString()方法,本文将介绍valueOf()方法,该方法返回原值 [1]undefined和null没有valueOf()方法 undefined.valueOf();//错误 null.valueOf();//错误 [2]布尔型数据true和false返回原值 true.valueOf();//true typeof true.valueOf(
-
浅谈mysqldump使用方法(MySQL数据库的备份与恢复)
#mysqldump --help 1.mysqldump的几种常用方法: (1)导出整个数据库(包括数据库中的数据) mysqldump -u username -p dbname > dbname.sql (2)导出数据库结构(不含数据) mysqldump -u username -p -d dbname > dbname.sql (3)导出数据库中的某张数据表(包含数据) mysqldump -u username -p dbname tablename > tabl
-
浅谈JavaScript find 方法不支持IE的问题
最近在前端开发中,遇到一个JavaScript 的问题. <script type="text/javascript"> var arrayList = new Array(); arrayList.push(1); arrayList.push(2); arrayList.push(3); arrayList.push(4); arrayList.find(function (val) { if (val == 4) { console.log('This is a te
-
浅谈使用setBounds()方法需要注意的地方
第一点,使用这个方法,component的x,y坐标是相对于它的父容器的.如果不注意,x.y的值,比父容器的宽度和高度还大的话,就容易造成加进去组件但是显示不出来的问题.我就是遇到这么一个问题,现在才想明白. 第二点,这个方法只有在父容器的布局方式为绝对布局时才管用,如果是别的布局方式,调用这个方法是没有效果的,只有采用setPreferredSize这个方法才管用.不同的布局方式有不同的设置方法. 以上这篇浅谈使用setBounds()方法需要注意的地方就是小编分享给大家的全部内容了,希望能给
-
浅谈jquery高级方法描述与应用
1.addBack() a. third-item的 li 下几个相邻节点(包括third-item) $( "li.third-item" ).nextAll().addBack(). .css( "background-color", "red" ); b. 和end()方法类似,选中的是div.after-addback和p元素,end选中的是div.after-addback元素 $( "div.after-addback&qu
-
浅谈在fetch方法中添加header后遇到的预检请求问题
今天在使用fetch方法 fetch('xxx.com',{header:{bbbbbbb:111}}) 浏览器返回的请求信息中,header变成了 :authority:koss.nocorp.me :method:OPTIONS :path:/?a=1 :scheme:https accept:*/* accept-encoding:gzip, deflate, br accept-language:zh-CN,zh;q=0.8 access-control-request-headers:
-
浅谈PHP拦截器之__set()与__get()的理解与使用方法
"一般来说,总是把类的属性定义为private,这更符合现实的逻辑. 但是,对属性的读取和赋值操作是非常频繁的,因此在PHP5中,预定义了两个函数"__get()"和"__set()"来获取和赋值其属性,以及检查属性的"__isset()"和删除属性的方法"__unset()". 我们为每个属性做了设置和获取的方法,在PHP5中给我们提供了专门为属性设置值和获取值的方法,"__set()"和&qu
随机推荐
- asp实现限制一个ip只能访问一次的方法
- SQLServer APPLY表运算符使用介绍
- for语句中的几种分隔符形式小结
- 关于echo 的问题与使用说明
- 微信支付java版本之JSAPI支付+发送模板消息
- Python 用户登录验证的小例子
- 动态加载js、css等文件跨iframe实现
- JS的正则表达式常用检测代码
- Android中的动态加载机制的学习研究
- javascript中的new使用
- Python获取SQLite查询结果表列名的方法
- javascript模拟订火车票和退票示例
- 图文详解MySQL中两表关联的连接表如何创建索引
- Android获取本地相册图片和拍照获取图片的实现方法
- JS建造者模式基本用法实例分析
- 简述Matlab中size()函数的用法
- C++中变量的类型与作用域学习教程
- Hibernatede 一对多映射配置方法(分享)
- 深入内存对齐的详解
- java编写简单的E-mail发送端程序