• 同一域名空间,函数名相同,签名不同
  • 编译期绑定确定绑定函数,也称为静态多态

    重写:覆盖(override)

  • 虚函数
  • 子类空间,函数名相同,签名相同

    重定义:遮蔽(redefine)

  • 非虚函数,子类成员函数与父类成员函数同名
  • 虚函数,子类成员函数与父类成员函数同名但不同签名

    多态:(动态多态)

  • 运行期确定绑定对象,也称为动态多态
  • 同签名虚函数构成覆盖
  • 父类指针指向子类对象,调用属于子类的函数

  • 顶层函数重载操作符
  • 非对象操作数可以出现在操作符左边
  • 使用类成员函数重载是,第一操作数必须是累的对象
  • 顶层函数不能直接访问类私有成员,最好将顶层重载函数设为友元函数,方便直接访问私有数据成员
  • 重载[]: 重载为成员函数,检查下标 , 返回一个引用适应左值情况
  • 重载(): 函数调用重载操作符
  • 析构函数出现,必须定义拷贝构造,赋值构造函数

  • 继承下的构造函数:
  • 先父类按继承顺序构造,再成员按顺序构造,最后派生类构造
  • 每一层只负责调用父类构造函数
  • 基类没有默认构造时,子类构造函数必须显式调用基类的某个构造函数
  • 创建派生类对象时,自动调用基类默认构造函数

    - 子类有构造函数,基类没有默认构造,创建子类对象时,自动创建基类默认构造函数

    - 子类没有构造函数,基类有默认构造,创建子类对象时,自动调用基类默认构造

    - 子类有构造函数,基类也有默认构造,创建子类对象时,直接调用基类默认构造,或者调用子类显式调用的构造函数

    - 子类基类均有构造,但是基类没有默认构造,创建子类对象时,必须显式调用基类构造函数
  • 继承下的析构函数: 定义实现对派生类新增成员的析构释放
  • 虚基类构造优先于非虚基类的构造
  • 虚基类构造由最派生类调用,其他派生类跳过对虚基类构造的调用
  • 派生类对象和指针可适用于任何基类对象或指针使用的位置(子类可以向上转型)
  • 赋值兼容:子类对象可以赋值或者初始化父类对象,基类指针可以指向子类对象地址

重载(overload)、重写:覆盖(override)、重定义:遮蔽(redefine)、多态的更多相关文章

  1. 【转】重载(overload),覆盖(override),隐藏(hide)的区别

    原文网址:http://www.cppblog.com/zgysx/archive/2007/03/12/19662.html 写正题之前,先给出几个关键字的中英文对照,重载(overload),覆盖 ...

  2. 重载(overload),覆盖(override),隐藏(hide)的区别

    写正题之前,先给出几个关键字的中英文对照,重载(overload),覆盖(override),隐藏(hide).在早期的C++书籍中,可能翻译的人不熟悉专业用语(也不能怪他们,他们不是搞计算机编程的, ...

  3. 重载(overload)、覆盖(override)和隐藏(hide)

    写正题之前,先给出几个关键字的中英文对照,重载(overload),覆盖(override),隐藏(hide).在早期的C++书籍中,可能翻译的人不熟悉专业用语(也不能怪他们,他们不是搞计算机编程的, ...

  4. 区分重载(overload),覆盖(Override)和隐藏(hide)

    重载overload,这个概念是大家熟知的.在同一可访问区内被声名的几个具有不同参数列的(参数的类型.个数.顺序不同)同名函数,程序会根据不同的参数列来确定具体调用哪个函数,这种机制就是重载.重载不关 ...

  5. 重写(overwrite)、重载(overload)和覆盖(override)三者之间的区别

    覆盖:子类继承了父类的同名无参函数.当子类从父类继承了一个无参函数,而又定义了一个同样的无参函数,则子类定义的方法覆盖父类的方法,称为覆盖. 重载:子类继承了父类的同名有参函数.当子类继承了父类的一个 ...

  6. 重载(overload)、覆盖(override)、隐藏(hide)的区别

    http://blog.csdn.net/yanjun_1982/archive/2005/09/02/470405.aspx 重载是指不同的函数使用相同的函数名,但是函数的参数个数或类型不同.调用的 ...

  7. JAVA是否允许返回值类型不同的重载overload或覆盖override

    在看<Thinking in java>的时候,看到子类的方法和父类的方法名字相同,但是返回值类型不同,然后就开始怀疑这属于覆盖吗,到网上找到了答案,分析见接下来的网址: http://g ...

  8. 重载(overload),覆盖/重写(override),隐藏(hide)

    写正题之前,先给出几个关键字的中英文对照,重载(overload),覆盖/重写(override),隐藏(hide).在早期的C++书籍中,常常把重载(overload)和覆盖(override)搞错 ...

  9. C++ 重载(overload)、重写(overrride)、重定义(redefine)总结

    引自:http://www.189works.com/article-42111-1.html 先来看几个概念: 重载(overload),重写(override,也称覆盖), 重定义(redefin ...

  10. C# 重载 overload,重写override覆盖

    重载overload 派生类和基类的方法同名,其中访问修饰符(public,private,protected,internal,protected internal),返回类型,参数类型,个数,顺序 ...

随机推荐

  1. Android: 触屏fling/scroll/drag的区别及其详细过程

    Google了一下,终于搞清了touch screen下的几种操作模式(对应的是事件). 对于一个view, 常用的操作有点击(click)和长按(long press)二种.实际上,这些操作类型是A ...

  2. 使用BlockingQueue的生产者消费者模式

    BlockingQueue很好的解决了多线程中,如何高效安全“传输”数据的问题.通过这些高效并且线程安全的队列类,为我们快速搭建高质量的多线程程序带来极大的便利.使用场景. 首先它是一个队列,而一个队 ...

  3. Spark1.4启动spark-shell时initializing失败

    错误信息如下: 5/11/03 16:48:15 INFO spark.SparkContext: Running Spark version 1.4.1 15/11/03 16:48:15 WARN ...

  4. Introduction to ASP.NET Web Programming Using the Razor Syntax (C#)

    1, http://www.asp.net/web-pages/overview/getting-started/introducing-razor-syntax-c 2, Introduction ...

  5. JAVA toString方法

    在JAVA中,所有的对象都有toString方法: 创建类时没有定义toString方法,输出对象时,会输出对象的哈希值: 它只是sun公司开发java的时候为了方便所有类的字符串操作而特意加入的一个 ...

  6. ethereal抓包工具

    ethereal是目前网络上开源的一款功能强大的以太网抓包工具,该软件可以监听异常封包,检测软件封包问题,从网络上抓包,并且能对数据包进行分析,从而帮助用户解决各种网络故障,更加方便查看.监控TCP ...

  7. AI

  8. html table单双行颜色间隔(转载)

    直接上代码: <html> <head> <meta http-equiv="Content-Type" content="text/htm ...

  9. 慎用StringEscapeUtils.escapeHtml方法【转】

    推荐使用Apache commons-lang的StringUtils来增强Java字符串处理功能,也一直在项目中大量使用StringUtils和StringEscapeUtils这两个实用类. 最近 ...

  10. .Net中Math.Round与四舍五入

    有不少人误将Math.Round函数当作四舍五入函数在处理, 结果往往不正确, 实际上Math.Round采用的是国际通行的是 Banker 舍入法. Banker's rounding(银行家舍入) ...