重写

C++ Virtual 完美诠释

半腔热情 提交于 2020-03-22 18:03:43
解答了我的一些疑问,觉得写的不错!!!转载一下。 virtual在英文中表示“虚”、“虚拟”的含义。c++中的关键字“virtual”主要用在两个方面:虚函数与虚基类。下面将分别从这两个方面对virtual进行介绍。 1.虚函数 虚函数源于c++中的类继承,是多态的一种。在c++中,一个基类的指针或者引用可以指向或者引用派生类的对象。同时,派生类可以重写基类中的成员函数。这里“重写”的要求是函数的特征标(包括参数的数目、类型和顺序)以及返回值都必须与基类中的函数一致。如下所示: 可以在基类中将被重写的成员函数设置为虚函数,其含义是:当通过基类的指针或者引用调用该成员函数时,将根据指针指向的对象类型确定调用的函数,而非指针的类型。如下,是未将test()函数设置为虚函数前的执行结果: 在将test()函数设置为virtual后,执行结果如下: 如此,便可以将基类与派生类的同名方法区分开,实现多态。 说明: 1.只需将基类中的成员函数声明为虚函数即可,派生类中重写的virtual函数自动成为虚函数; 2.基类中的析构函数必须为虚函数,否则会出现对象释放错误。以上例说明,如果不将基类的析构函数声明为virtual,那么在调用delete p2;语句时将调用基类的析构函数,而不是应当调用的派生类的析构函数,从而出现对象释放错误的问题。 3.虚函数的使用将导致类对象占用更大的内存空间

Python基础(第八节)

我的未来我决定 提交于 2020-03-17 09:48:50
方法没有重载 1、在其他语言中,可以定义多个同名的方法 2、Python中方法的参数没有声明类型,参数的数量也可以由可变参数控制,因此Python中没有方法的重载 3、定义一个方法即可有多种调用方式,相当于实现了其他语言中的方法的重载 4、定义多个同名方法时,只有最后一个有效 方法的动态性 Python是动态语言,可以动态地为类添加新方法,或者动态地修改类的已有的方法 class Person: def work(self): print("努力工作!") def play_game(a): print("{}在玩游戏".format(a)) def work2(n): print("努力赚大钱,努力工作!") Person.play = play_game p = Person() p.work() p.play() #解释器解释为Person.play(p) Person.work = work2 #二者形参数量要对应 p.work() 运行结果为: 努力工作! <__main__.Person object at 0x00000287ABF64CF8>在玩游戏 努力赚大钱,努力工作! 私有属性和私有方法 1、Python对于类的成员没有严格的访问控制权限,这与其他面向对象语言有区别 2、关于私有属性和私有方法有如下要点: ①通常我们约定,两个下划线开头的属性是私有的

android 重写TextView 实现文字整齐排版

此生再无相见时 提交于 2020-03-01 10:13:50
//XRTextView类 package rong.android.test; import org.json.JSONArray; import org.json.JSONException; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.util.AttributeSet; import android.view.View; import android.widget.TextView; public class XRTextView extends TextView{ private final String namespace = "rong.android.TextView"; private String text; private float textSize; private float paddingLeft; private float paddingRight; private float marginLeft; private float marginRight; private int textColor; private

WAMP SERVER开启rewrite伪静态重写模块

那年仲夏 提交于 2019-12-07 10:26:12
WAMP SERVER一键安装套件在安装完后默认是未开启rewrite伪静态模块,不支持.htaccess rewrite规则,有rewrite规则的源代码运行时,会找不到路径出错。分享一下如何开启rewrite伪静态模块。 第一步:打开wamp安装目录里的bin文件夹,找到Apache安装目录下的conf目录中的httpd.conf配置文件(比如:E:\wamp\bin\apache\apache2.2.22\conf),使用文本编辑器打开 httpd.conf, 搜索mod_rewrite.so关键字找到,“#LoadModule rewrite_module modules/mod_rewrite.so”,找到这一行,去掉前面的“#”。 LoadModule rewrite_module modules/mod_rewrite.so 第二步:找到“AllowOverride None”改为“AllowOverride All”。 针对根目录下所有目录生效: <Directory /> Options FollowSymLinks AllowOverride All Order deny,allow Deny from all </Directory> 第三步:重启apache。 第四步:现在可以使用.htaccess文件实现伪静态等功能。

JAVA 基础

旧街凉风 提交于 2019-11-27 11:37:02
1. Java数据类型 Java是强类型语言,所有的变量必须先声明后使用,定义变量需要显示的声明一个在编译时就能确定的类型。 Java中的数据类型有两种,基本类型(Primitive Type)和引用类型(Reference Type)。 1)基本数据类型 Java 基本类型分为两类:数值型和布尔型。数值型可分为整型以及浮点型,整形中的字符型也可单独分为一类。所以一般把基本类型分为4类,如下表: 分类 类型 长度 整数型 int 32位 long 64位 short 16位 byte 8位 字符型 char 16位 浮点型 double 64位 float 32位 布尔型 boolean 1位 ①整型:int为最常用的整型变量。系统中的整数常量会被看作int处理。但有以下两个例外: 如果一个整数很小(在byte或short)的范围内,当这个整数常量被付给一个byte或short变量时,整数常量会被当作byte或short类型。 如果一个巨大的整数常量(超出了Int的存储范围)时,系统不会把这个整数当作long类型处理,除非用户在常量后加上一个字母"L"。 示例: [java] view plain copy public class IntegerValTest { public static void main(String[] args) { //下面代码是正确的

Asp.Net 存储桶的使用

独自空忆成欢 提交于 2019-11-26 03:10:20
1 部署方式 IIS 反向代理 2 环境搭建 URL Rewrite和Application Request Routing即可实现反向代理。先安装URL Rewrite和Application Request Routing,只转发到IIS内网站,则不需要安装ARR。 安装好以上两个插件,重启IIS管理器,然后点击当前主机,就会发现两个新增的图标了。 3 启动代理 点击Application Request Routing图标,选择Server Proxy Settings,勾上Enable proxy并点击右侧的应用。 4 URL 重写 选择“URL重写”,点击添加规则,选择空白规则,模式为: ^(.*) 然后条件输入”填写“{HTTP_HOST}”,模式为^域名$,入站规则的操作类型为“重写”,重写URL为“目标地址/{R:1}”,填好了保存下,即可完成IIS反向代理。 4 URL重定向(存储桶选择重定向) 选择“URL重写”,点击添加规则,选择空白规则,模式为: ^(.*) 然后条件输入”填写“{HTTP_HOST}”,模式为^域名$,入站规则的操作类型为“重定向”,重定向URL为“存储桶地址/{R:1}”,填好了保存下,即可完成URL重定向。 5 代理条件 来源: 51CTO 作者: AESCR 链接: https://blog.51cto.com/12268222