重载函数

模式对话框与非模式对话框的区别

喜夏-厌秋 提交于 2020-03-02 05:47:44
模式对话框就是不处理它就没法处理父窗口,而非模式对话框就是不用先处理此对话框也可以处理父窗口.例子:在桌面上右击我的电脑,选择属性,弹出系统属性窗口,点击下面的技术支持,弹出技术支持信息,现在再对系统属性窗口进行操作就操作不了,这种叫做模式对话框;关闭技术支持信息,在系统属性里选择硬件,点击设备管理器,弹出设备管理器窗口,现在再对系统属性窗口进行操作仍然可以操作,这种就叫做非模式对话框。 在WIN32中,模式对话框的创建一般是使用DialogBox来进行创建的。而非模式对话框则是利用CreateWindow来创建的。在MFC或是WTL中,模式对话框一般是使用DoModal,而非模式对话框的创建则是使用Create。 一、 使用中的区别 模式对话框创建后,程序的其他窗口便不能进行操作,必须将该窗口关闭后,其他窗口才能进行操作。而非模式对话框则无需这样,它不强制要求用户立即反应,而是与其他窗口同时接受用户操作。 二、 消息响应的区别 在消息响应方面,模式对话框和非模式对话框之间又有着很大的区别。模式对话框工作的时候,它有内部的消息泵机制,控件之间的交互不用我们人为的去控制,系统会帮助我们去处理。非模式对话框则像普通窗口一样,则由WinMain中书写的消息循环驱动。但由于是对话框,它对一些消息有特殊的处理。因此,在消息循环中,需要先对对话框提供截获消息的机会。 While

如何用C#编写文本编辑器

谁说我不能喝 提交于 2020-02-29 19:39:28
摘要 本文探讨了使用C#从底层开发一个带格式的文本编辑器的任务,深入探讨了其中的文档对象模型的设计,图形化用户界面的处理和用户操作的响应,说明了其中的某些技术问题和解决之道。 前言 小弟从大学里开始接触编程也有6年了,工作4年也是干编程的活,见过不少程序,自己也编过不少,在学校编程自己觉得是搞艺术品,其实玩一些游戏,比如文明法老王星际等从某些角度看也是搞艺术品,看着自己苦心经营的建筑物和人员由少变多,由简单变复杂,心中有些成就感。编程也一样,程序从几十行写到上万行,功能由HellowWord到相当复杂而强大,心中也有不少成就感。 毕业后工作,才渐渐感悟软件开发本质上是做一个工具,这个工具给别人或者自己用。有了工具,很多问题就迎刃可解了。如此开来偶们程序员和石匠铁匠木匠是同一类人了。不过没什么,程序员本来就没高人一等,人在社会,认认真真的工作就行了。 问题 废话不多说了,现在谈谈标题提出的问题,如何用C#编写文本编辑器。本人有幸开发过一个比较复杂的文本编辑器,因此也算有点经验吧,在此来分享一下。这里所指的文本编辑器不是简单的像Windows自带的单行或多行文本编辑框,而是类似于Word的文本编辑器。 粗看起来,一个编辑器有什么好难的,其实很难的,因为我们认为容易的事对计算机来说确实天大的问题。比如大家经常上网,可以发现最近几年很多网站登录时除了输入用户名和密码后还要输入所谓的验证码

js 函数重载

回眸只為那壹抹淺笑 提交于 2020-02-27 17:23:02
/*给某个对象添加方法的函数*/ function addMethod(object, name, fn) { var old = object[name]; //第一次old是 undefined object[name] = function() { //如果调用函数的参数长度等于fn的参数长度,那就返回当前函数 if (fn.length == arguments.length) { return fn.apply(this, arguments); } else if (typeof old == 'function') { //如果当前的调用不匹配那么调用上一次的old,直到匹配为止 return old.apply(this, arguments); } } } 来源: oschina 链接: https://my.oschina.net/xiehou/blog/3176121

Java 重写(Override)与重载(Overload)

本小妞迷上赌 提交于 2020-02-27 12:50:19
重写(Override) 重写是子类对父类的允许访问的方法的实现过程进行重新编写, 返回值和形参都不能改变。 即外壳不变,核心重写! 重写的好处在于子类可以根据需要,定义特定于自己的行为。 也就是说子类能够根据需要实现父类的方法。 重写方法不能抛出新的检查异常或者比被重写方法申明更加宽泛的异常。例如: 父类的一个方法申明了一个检查异常 IOException,但是在重写这个方法的时候不能抛出 Exception 异常,因为 Exception 是 IOException 的父类,只能抛出 IOException 的子类异常。 在面向对象原则里,重写意味着可以重写任何现有方法。实例如下: TestDog.java 文件代码: class Animal { public void move ( ) { System . out . println ( " 动物可以移动 " ) ; } } class Dog extends Animal { public void move ( ) { System . out . println ( " 狗可以跑和走 " ) ; } } public class TestDog { public static void main ( String args [ ] ) { Animal a = new Animal ( ) ; // Animal

C++ const 与函数重载

和自甴很熟 提交于 2020-02-26 22:43:39
#include <iostream> using namespace std; /* * 在函数重载时,形参为底层const可以重载 * 而形参为顶层const时不可重载 * 向实参添加顶层const或者从实参中删除顶层const属于精确匹配 * 无法区分两个函数 * 所以不能发生重载 */ int f(int const i) { cout << "const f" << endl; } int f(int i) { //报错 cout << "f" << endl; } //=============================== void k(const int *p) { return; } void k(int *p) { return; } void k(int* const P) {//报错 return; } 来源: oschina 链接: https://my.oschina.net/depeng414/blog/3160788

方法的重载

耗尽温柔 提交于 2020-02-26 14:04:35
方法的重载 有些时候我们需要用一个函数同时兼容多种参数的情况, 我们就可以使用到方法重载. 1、 重载要解决的问题 代码示例 class Test { public static void main(String[] args) { int a = 10; int b = 20; int ret = add(a, b); System.out.println("ret = " + ret); double a2 = 10.5; double b2 = 20.5; double ret2 = add(a2, b2); System.out.println("ret2 = " + ret2); } public static int add(int x, int y) { return x + y; } } // 编译出错 Test.java:13: 错误: 不兼容的类型: 从double转换到int可能会有损失 double ret2 = add(a2, b2); ^ 由于参数类型不匹配, 所以不能直接使用现有的 add 方法. public class Test1{ public static int add(int x,int y) { return x+y; } public static double add(double x,double y) { return x+y;

重载与覆盖有什么区别?

旧街凉风 提交于 2020-02-26 04:11:44
1.定义区别: ①重载是指不同的函数使用相同的函数名,但是函数的参数个数或类型不同。调用的时候根据函数的参数来区别不同的函数。 ②覆盖(也叫重写)是指在派生类中重新对基类中的虚函数(注意是虚函数)重新实现。即函数名和参数都一样,只是函数的实现体不一样。 2.类的关系区别 覆盖是子类和父类之间的关系,是垂直关系;重载是同一个类中方法之间的关系,是水平关系。 3.产生方法区别 覆盖只能由一个方法或只能由一对方法产生关系;重载是多个方法之间的关系。 来源: 51CTO 作者: gzkhrh 链接: https://blog.51cto.com/gzkhrh/2468876

C++细节注意点

痴心易碎 提交于 2020-02-25 15:44:44
文章目录 实现和声明的分离 不使用 using namespace std; C++对C语言的增强 重点1 引用 引用的注意事项 引用的本质 指针引用 常量型引用 成员函数调用const修饰对象实例 构造和析构函数实例 拷贝构造函数 拷贝构造函数的调用时机 深拷贝浅拷贝 深拷贝 初始化列表 类对象作为类成员的案例 explicit 关键字 new动态对象创建 完美代替malloc 静态成员变量 静态成员函数 单例模式 成员变量和成员属性分开处理 this指针 this指针的使用 空指针访问成员的函数 常函数和常对象 全局函数做友元函数 整个类做友元类 让成员函数做友元函数 自定义数组实例 运算符重载 二元重载 左移右移的重载的注意点 属性私有后 要使用友元来进行重载 前置后置递增运算符 指针运算符重载(自定义一个智能指针) 赋值运算符重载 [] 运算符的重载 关系运算符重载 函数调用运算符重载 不要重载||和&& 自定义string类 继承 继承方式 继承中的对象模型 继承中的构造和析构顺序 继承中同名成员的处理 继承中静态成员的处理 多继承 菱形继承 解决二义性的方法 虚继承工作原理 多态 静态编联和动态编联 多态原理解析 多态案例1 计算器 抽象类和纯虚基类 虚析构和纯虚析构函数 向上类型转换向下类型转换 游戏多态实例 模板 排序实例 普通函数和函数模板的区别 模板机制内部原理

Java中重载(overload)和重写(override)的区别

本小妞迷上赌 提交于 2020-02-24 05:03:43
Java中重载(overload)和重写(override)的区别 重载(overload):重载构成的条件:方法的名称相同,但参数类型或参数个数不同,才能构成方法的重载。 重写(override)在子类中定义一个与父类同名、返回类型、参数类型均相同一个方法,称为方法的覆盖。 覆盖发生在子类与父类之间。通常应用于多态中。 首先我们来讲讲: 一、重载(Overloading) (1) 方法重载是让类以统一的方式处理不同类型数据的一种手段。多个同名函数同时 存在,具有不同的参数个数/类型。重载Overloading是一个类中多态性的一种表现。 (2) Java的方法重载,就是在类中可以创建多个方法,它们具有相同的名字,但具 有不同的参数和不同的定义。调用方法时通过传递给它们的不同参数个数和参数类型 来决定具体使用哪个方法, 这就是多态性。 (3) 重载的时候,方法名要一样,但是参数类型和个数不一样,返回值类型可以相同 也可以不相同。无法以返回型别作为重载函数的区分标准。 下面是重载的例子: package c04.answer;//这是包名 //这是这个程序的第一种编程方法,在main方法中先创建一个Dog类实例,然后在Dog类的构造方法中利用this关键字调用不同的bark方法。不同的重载方法bark是根据其参数类型的不同而区分的。 //注意:除构造器以外

重载和重写的区别

吃可爱长大的小学妹 提交于 2020-02-24 05:03:30
重载和重写的区别 1、重载(Overloading) (1)方法重载是让类以统一的方式处理不同类型数据的一种手段。多个同名函数同时 存在,具有不同的参数个数/类型。重载Overloading是一个类中多态性的一种表现。 (2)Java的方法重载,就是在类中可以创建多个方法,它们具有相同的名字,但具 有不同的参数和不同的定义。调用方法时通过传递给它们的不同参数个数和参数类型 来决定具体使用哪个方法, 这就是多态性。 (3)重载的时候,方法名要一样,但是参数类型和个数不一样,返回值类型可以相同 也可以不相同。无法以返回型别作为重载函数的区分标准。 下面是重载的例子: package c04.answer;//这是包名 //这是这个程序的第一种编程方法,在main方法中先创建一个Dog类实例,然后在Dog 类的构造方法中利用this关键字调用不同的bark方法。不同的重载方法bark是根据其参 数类型的不同而区分的。 //注意:除构造器以外,编译器禁止在其他任何地方中调用构造器。 package c04.answer; public class Dog { Dog() { this.bark(); } void bark()//bark()方法是重载方法 { System.out.println("no barking!"); this.bark("female", 3.4); }