精华内容
下载资源
问答
  • C++中的多态

    2018-04-03 19:19:48
    ·编译时的多态·运行时的多态2.C++中多态的表现形式主要有哪几种?·函数重载·运算符重载·虚函数3.这三种是属于哪种多态?运行时的多态主要通过虚函数来实现,而编译时的多态与运算符重载和函数重载来实现4.哪些...

    1.C++中的多态有哪几种?

    ·编译时的多态

    ·运行时的多态

    2.C++中多态的表现形式主要有哪几种?

    ·函数重载

    ·运算符重载

    ·虚函数

    3.这三种是属于哪种多态?

    运行时的多态主要通过虚函数来实现,而编译时的多态与运算符重载和函数重载来实现

    4.哪些运算符可以重载?

    “+”,“-”,“*”,“/”,“%”等除了“.”“.*”“::”sizeof和三目运算符以外C++中所有自带的运算符都可以重载。

    5.合法的运算符重载有哪些限制?

    (1) 重载之后的运算符不能改变运算符的优先级和结合性;

    (2) 重载之后的运算符不能改变运算符操作数的个数及语法结构;

    (3) 重载的运算符操作数至少有一个是自定义类型的;

    (4) 重载运算符函数通常不能有默认的参数。

    6.当运算符重载为类的成员函数时,应注意什么?

    (1)函数的参数个数要比原来的操作数少一个左操作数(成员函数用this指针隐式地访问了一个对象,后置单目运算符不需要显式说明参数)。

    (2)调用成员函数运算符的标准格式:

    <对象名>.operator<运算符>(<参数>)   <=>   <对象名><运算符><参数>

    如: m.operator+n     <=>   m+n

    (3) =、()、[ ]、->不能重载为类的友员函数外其他运算符都可以重载为类的成员或友员函数。

    7.虚继承的作用?

    多重继承时,如:D继承自类B和类C,而类B、C继承自类A,当把类B和C定义为对A的虚继承时,类A、B、C、D共享同一份变量或函数。如:

    d.D::a;可以用以下表示:

    d.A::a;

    d.B::a;

    d.C::a;

    8.父类和子类对象之间的赋值有什么限制?

    ·有公有继承关系的对象间才可以赋值

    ·子类对象可以给父类对象赋值

    ·父类对象不可以给子类对象赋值

    ·若想父类对象给子类对象赋值,可以强制类型转换(很危险)

    9.重载、覆盖以及隐藏有什么区别?

    重载通常指函数重载,表示在一个类中,函数名相同而参数不同,称为函数重载;

    覆盖是指子类覆盖父类的函数,覆盖的要求是函数名相同,参数相同,并且父类函数必须有virtual关键字,如果没有就构不成覆盖;

    隐藏是指子类函数屏蔽了其同名的父类函数或变量,子类的函数或变量可以通过子类对象直接访问,父类的公有函数或变量通过如下形式访问:

    子类对象.父类::父类公有函数或变量

    10.虚函数有什么特点?

    ·使用虚函数时,存在子类公有继承自父类才有意义

    ·如果在父类中显式声明函数为虚函数,在子类中同名同参的函数即使没有显式声明为虚函数,它也是虚函数

    ·虚函数必须是所在类的,不能是友员函数和静态成员函数

    ·构造函数不能是虚函数,但析构函数可以是虚函数

    展开全文
  • 多态的运行期行为体现在虚函数上,虚函数通过继承方式来体现出多态作用,顶层 函数不属于成员函数,是不能被继承 2.为什么C++不支持构造函数为虚函数? 这个原因很简单,主要是从语义上考虑,所以不支持。因为...
  • 单继承

    2018-04-12 18:48:02
    ··编译时的多态运行时的多态2.C++中多态的表现形式主要有哪几种?·函数重载·运算符重载·虚函数3.这三种是属于哪种多态?运行时的多态主要通过虚函数来实现,而编译时的多态与运算符重载和函数重载来实现4.哪些...
    

    1.C++中的多态有哪几种?

    ·

    ·编译时的多态

    运行时的多态

    2.C++中多态的表现形式主要有哪几种?

    ·函数重载

    ·运算符重载

    ·虚函数

    3.这三种是属于哪种多态?

    运行时的多态主要通过虚函数来实现,而编译时的多态与运算符重载和函数重载来实现

    4.哪些运算符可以重载?

    “+”“-”“*”“/”“%”等除了“.”“.*”“::”sizeof和三目运算符以外C++中所有自带的运算符都可以重载。

    5.合法的运算符重载有哪些限制?

    (1) 重载之后的运算符不能改变运算符的优先级和结合性;

    (2) 重载之后的运算符不能改变运算符操作数的个数及语法结构;

    (3) 重载的运算符操作数至少有一个是自定义类型的;

    (4) 重载运算符函数通常不能有默认的参数。

    6.当运算符重载为类的成员函数时,应注意什么?

    1函数的参数个数要比原来的操作数少一个左操作数(成员函数用this指针隐式地访问了一个对象,后置单目运算符不需要显式说明参数)。

    2)调用成员函数运算符的标准格式:

    <对象名>.operator<运算符>(<参数>)   <=>   <对象名><运算符><参数>

    如: m.operator+n     <=>   m+n

    3 =、()、[ ]->不能重载为类的友员函数外其他运算符都可以重载为类的成员或友员函数。

    7.虚继承的作用?

    多重继承时,如:D继承自类B和类C,而类BC继承自类A,当把类BC定义为对A的虚继承时,类ABCD共享同一份变量或函数。如:

    d.D::a;可以用以下表示:

    d.A::a;

    d.B::a;

    d.C::a;

    8.父类和子类对象之间的赋值有什么限制?

    ·有公有继承关系的对象间才可以赋值

    ·子类对象可以给父类对象赋值

    ·父类对象不可以给子类对象赋值

    ·若想父类对象给子类对象赋值,可以强制类型转换(很危险)

    9.重载、覆盖以及隐藏有什么区别?

    重载通常指函数重载,表示在一个类中,函数名相同而参数不同,称为函数重载;

    覆盖是指子类覆盖父类的函数,覆盖的要求是函数名相同,参数相同,并且父类函数必须有virtual关键字,如果没有就构不成覆盖;

    隐藏是指子类函数屏蔽了其同名的父类函数或变量,子类的函数或变量可以通过子类对象直接访问,父类的公有函数或变量通过如下形式访问:

    子类对象.父类::父类公有函数或变量

    10.虚函数有什么特点?

    ·使用虚函数时,存在子类公有继承自父类才有意义

    ·如果在父类中显式声明函数为虚函数,在子类中同名同参的函数即使没有显式声明为虚函数,它也是虚函数

    ·虚函数必须是所在类的,不能是友员函数和静态成员函数

    ·构造函数不能是虚函数,但析构函数可以是虚函数

     

     

     

     

    展开全文
  • 常见不不能声明为虚函数有:普通函数(非成员函数);静态成员函数;内联成员函数;...多态的运行期行为体现在虚函数上,虚函数通过继承方式来体现出多态作用,顶层 函数不属于成员函数,是不能被继承 2.

    常见的不不能声明为虚函数的有:普通函数(非成员函数);静态成员函数;内联成员函数;构造函数;友元函数。

    1.为什么C++不支持普通函数为虚函数?

    普通函数(非成员函数)只能被overload,不能被override,声明为虚函数也没有什么意思,因此编译器会在编译时邦定函数。

    多态的运行期行为体现在虚函数上,虚函数通过继承方式来体现出多态作用,顶层函数不属于成员函数,是不能被继承的

    2.为什么C++不支持构造函数为虚函数?

    这个原因很简单,主要是从语义上考虑,所以不支持。因为构造函数本来就是为了明确初始化对象成员才产生的,然而virtualfunction主要是为了在不完全了解细节的情况下也能正确处理对象。另外,virtual函数是在不同类型的对象产生不同的动作,现在对象还没有产生,如何使用virtual函数来完成你想完成的动作。(这不就是典型的悖论)

    (1)构造函数不能被继承,因而不能声明为virtual函数

    (2)构造函数一般是用来初始化对象,只有在一个对象生成之后,才能发挥多态作用,如果将构造函数声明为virtual函数,则表现为在对象还没有生成的情

    况下就使用了多态机制,因而是行不通的。

    3.为什么C++不支持内联成员函数为虚函数?

    其实很简单,那内联函数就是为了在代码中直接展开,减少函数调用花费的代价,虚函数是为了在继承后对象能够准确的执行自己的动作,这是不可能统一的。(再说了,inline函数在编译时被展开,虚函数在运行时才能动态的邦定函数)

    inline函数和virtual函数有着本质的区别,inline函数是在程序被编译时就展开,在函数调用处用整个函数体去替换,而virtual函数是在运行期才能够确定如何去调用的,因而inline函数体现的是一种编译期机制,virtual函数体现的是一种运行期机制。此外,一切virtual函数都不可能是inline函数。

    4.为什么C++不支持静态成员函数为虚函数?

    这也很简单,静态成员函数对于每个类来说只有一份代码,所有的对象都共享这一份代码,他也没有要动态邦定的必要性。不能被继承,只属于该类。

    5.为什么C++不支持友元函数为虚函数?

    因为C++不支持友元函数的继承,对于没有继承特性的函数没有虚函数的说法。友元函数不属于类的成员函数,不能被继承。

     

    展开全文
  • JAVA基础知识注意点

    2020-09-11 23:41:00
    子类可以覆盖父类方法,因此同样方法再父类和子类中有着不同表现形式,是属于运行时多态 抽象类和接口异同 相同点 1)都不能被实例化 2)接口实现类或抽象方法子类都只有实现类接口或抽象类方法才能...

    面向对象有哪些特征

    • 抽象
    • 封装
    • 继承
    • 多态

    多态的实现机制

    • 方法的重载
      重载是指再 统一个类中,方法名相同参数不同的多个方法,是属于编译时多态
    • 方法的覆盖
      子类可以覆盖父类的方法,因此同样的方法再父类和子类中有着不同的表现形式,是属于运行时多态

    抽象类和接口的异同

    • 相同点
      1)都不能被实例化
      2)接口的实现类或抽象方法的子类都只有实现类接口或抽象类的方法才能被实例化
    • 不同点
      1)接口只有定义,其方法不能再接口中实现;而抽象类可以有定义与实现
      2)接口需要有到实现implements关键字,抽象类只能被继承extends
      3)接口强调特定功能的实现,设计理念为has-a关系,抽象强调从属关系,其设计理念为is-a
      4)接口的成员变量默认为public static final,必须赋初始值,所有成员方法只能被public、abstract修饰;抽象类可以有自己的成员变量数据,也可以有非抽象的方法

    内部类有哪几种

    • 静态内部类
    • 成员内部类
    • 局部内部类
    • 匿名内部类

    如何获取父类的类名
    使用getClass().getSuperClass().getName()方法获取

    展开全文
  • C++哪些函数不能声明为虚函数   什么样函数不能声明为虚函数?...而多态体现在运行时绑定。通常通过基类指针指向子类对象实现多态。 2)友元函数 友元函数不属于成员函数,不能被继承。对于没有继承
  • C++哪些函数不能声明为虚函数

    千次阅读 2019-02-25 11:37:29
    什么样函数不能声明为虚函数?...而多态体现在运行时绑定。通常通过基类指针指向子类对象实现多态。 2)友元函数 友元函数不属于成员函数,不能被继承。对于没有继承特性函数没有虚函数说法。 3)...
  • 【Java三个特性】

    2018-07-06 16:48:54
    三大特性(封装、继承、...重载是本类中方法的多态,调用方法通过传递给方法的不同参数(参数个数、参数类型)来确定具体使用哪个方法。(向上转型,编译看左边,决定哪些方法编译,运行看实际类型选择)??? 方法名...
  • (5) implements 子句用于说明类中将实现哪些接口,接口是 Java 一种引用类 型。 (6) 类体包含了变量和方法。在类体中定义数据、变量和方法称为类成员, 或称为实例变量和实例方法。 (7) 例如: 下例定义...
  • 所谓绑定是指将一个方法调用与方法主体关联起来过程。 编译绑定我们成为静态绑定,也叫前期绑定。 运行时刻进行绑定我们...类属性是不支持多态的,类属性访问属于静态绑定(直接访问属性,不是通过方法访...
  • C#微软培训教材(高清PDF)

    千次下载 热门讨论 2009-07-30 08:51:17
    2.2 公用语言运行时环境与公用语言规范.13 2.3 开 发 工 具 .17 2.4 小 结 .19 第三章 编写第一个应用程序 .20 3.1 Welcome 程序 .20 3.2 代 码 分 析 .20 3.3 运 行 程 序 .23 .4 添 加 注 释 .25 ...
  • C#微软培训资料

    2014-01-22 14:10:17
    2.2 公用语言运行时环境与公用语言规范.13 2.3 开 发 工 具 .17 2.4 小 结 .19 第三章 编写第一个应用程序 .20 3.1 Welcome 程序 .20 3.2 代 码 分 析 .20 3.3 运 行 程 序 .23 .4 添 加 注 释 .25 ...
  • 下列属于面向对象开发方法是(A B C D)。 A) Booch B) UML C) Coad D) OMT 6. 软件危机主要表现是(B D)。 A) 软件成本太高 B) 软件产品质量低劣 C) 软件开发人员明显不足 D) 软件生产率低下 7...
  • 2-18 编写一个程序,运行时提示输入一个数字,再把这个数字显示出来。 解: 源程序: #include <iostream.h> int main() { int i; cout 请输入一个数字:"; cin >> i; cout 您输入一个数字是" ; return 0; } 程序...
  • java面试宝典

    2013-02-28 16:04:01
    95、以下哪些属于Session方法?(A,B,C,D,F) 22 96、Hibernate工作原理及为什么要用? 22 97、Hibernate是如何延迟加载? 22 98、Hibernate中怎样实现类之间关系?(如:一对多、多对多关系) 22 99、说下Hibernate...
  • 千方百计笔试题大全

    2011-11-30 21:58:33
    95、以下哪些属于Session方法?(A,B,C,D,F) 22 96、Hibernate工作原理及为什么要用? 22 97、Hibernate是如何延迟加载? 22 98、Hibernate中怎样实现类之间关系?(如:一对多、多对多关系) 22 99、说下Hibernate...
  • 28.SQLSERVER服务器中,给定表 table1 中有两个字段 ID、LastUpdateDate,ID表示更新的事务号, LastUpdateDate表示更新时的服务器时间,请使用一句SQL语句获得最后更新的事务号 答:Select ID FROM table1 Where ...
  • JAVA面试题最全集

    2010-03-13 13:09:10
    7.Java多态的实现(继承、重载、覆盖) 8.编码转换,怎样实现将GB2312编码字符串转换为ISO-8859-1编码字符串。 9.Java中访问数据库步骤,Statement和PreparedStatement之间区别。 10.找出下列代码可能...
  • 软件工程教程

    热门讨论 2012-07-06 23:10:29
    只有在修饰增强了图整体清晰性和可读性或者突出模型某些重要特征,才应该表示那些修饰 公共分类 描述认识世界特殊方法 类和实例 类元:一类事物抽象概念;如“银行帐户” 实例:一类事物特定实例;如...

空空如也

空空如也

1 2
收藏数 28
精华内容 11
关键字:

哪些属于运行时的多态