问个虚函数向基类指针转换的问题

C/C++ > C++ 语言 [问题点数:40分,结帖人zwd2005]
等级
本版专家分:48
结帖率 100%
等级
本版专家分:41078
勋章
Blank
黄花 2009年3月 C/C++大版内专家分月排行榜第二
等级
本版专家分:4571
等级
本版专家分:4571
等级
本版专家分:48
等级
本版专家分:8947
等级
本版专家分:19028
勋章
Blank
红花 2012年6月 扩充话题大版内专家分月排行榜第一
Blank
黄花 2012年1月 扩充话题大版内专家分月排行榜第二
等级
本版专家分:683
zwd2005

等级:

虚函数,抽象基类,公有、私有和受保护继承,派生类向基类转换的可访问性

当某个虚函数通过指针或引用调用时,编译器产生的代码直到运行时才能确定应该调用哪个版本的函数。被调用的函数是与之绑定到指针或引用上的对象的动态类型相匹配的那一 #include<bits/stdc++.h> using ...

C++面试题之虚函数(表)实现机制

虚函数带来的好处就是: 可以定义一个基类指针, 其指向一继承类, 当通过基类指针去调用函数时, 可以在运行时决定该调用基类的函数还是继承类的函数. 虚函数是实现多态(动态绑定)/接口函数的基础. 可以说: 没有...

多态继承情况下,有一个基类指针指向派生类对象,如何用它调用基类的虚函数?...

前一个问题是:非多态情况下,用基类指针去访问派生类的函数。 那么又要了:多态情况下,怎么用基类指针去访问基类的函数呢?当然这里指的是虚函数。 答案是:用取内容运算符*获得派生类对象,然后再强制转换成...

c++之虚函数基类指针

1.基类指针虽然获取派生类对象地址,却只能访问派生类从基类继承的成员 1 #include <iostream> 2 using namespace std; 3 4 //通过基类指针只能访问从基类继承的成员 5 class A 6 { 7 ...

C++中的虚函数和子类基类指针的相互转换

C++中的虚函数和子类基类指针的相互转换 虚函数 虚函数是用来动态实现多态机制的一种方式,用基类指针指向子类对象,调用子类中的成员函数,实现多态。在基类中声明成员函数时,在前面加上virtual关键字,例如: ...

多态情况下,怎么用基类指针去访问基类的虚函数

class Base { // 基类 public: virtual void f() { cout<<"Base"<<endl; } }; class Derived : public Base { // 派生类 public: virtual void f() { // 最好加上该virtual cout...

C++ 基类指针和派生类指针之间的转换

函数重载、函数隐藏、函数覆盖 函数重载只会发生在同作用域中...函数隐藏是指派生类中函数与基类中的函数同名,但是这函数在基类中并没有被定义为虚函数,这种情况就是函数的隐藏。 所谓隐藏是指使用常规的调...

c++ 虚函数多态、纯虚函数、虚函数指针、虚基类指针详解

静态多态和动态多态–虚函数、纯虚函数 静态多态:程序在编译阶段就可以确定调用哪个函数。这种情况叫做静态多态。比如重载 动态多态:在运行期间才可以确定最终调用...采用在基类中将此函数定义成虚函数,派生类...

基类指针转换为子类指针,子类指针转换为基类指针(转载)

原文:... 把代码修改了一丢丢而已,只不过加上了正常的情况对照(*^__^*) 嘻嘻…… #include #include using namespace std; class base { public: virt

c++ 基类指针指向派生类对象 虚函数 多态 动态联编

指向基类的指针可以指向派生类对象,当基类指针指向派生类对象时,这种指针只能访问派生对象从基类继承而来的那些成员,不能访问子类特有的元素,除非应用强类型转换,例如有基类B和从B派生的子类D,则B *p;...

关于虚基类指针向派生类指针转化

#include using namespace std; class base1 { public: base1(){cout()!";} void virtual printBase(){cout()!";} }; class derived1: virtual

虚基类转换为派生类的问题

http://biancheng.dnbcw.info/c/289331.html 看到一个虚函数相关的题目,现在分享下自己的思考。 #include using namespace std; class base { public: virtual void funb1() { cout }

基类指针转换为子类指针,子类指针转换为基类指针

#include #include using namespace std; class base { public: virtual void virtual_fun() {cout;} void normal_fun() {cout;} }; cla

基类指针与派生类指针的互相转换

C++基类指针和派生类指针之间的转换方法讲解 函数重载、函数隐藏、函数覆盖 函数重载只会发生在同作用域中(或同一类中),函数名称相同,但参数类型或参数数不同。 函数重载不能通过函数的返回类型来区分...

面向对象程序设计之基类,派生类与虚函数

面向对象程序设计的核心思想是:数据抽象:实现类与接口的分离。继承:定义相似类型并进行相似关系建模。...对于某些函数,基类希望它的派生类各自定义适合自身的版本,此时的基类就将这些函数声明成虚函数。cl

基类指针指向子类对象的原理解释——类的内部存储结构和内存分布及继承时的特殊情况

之前粗浅得了解了基类指针指向子类对象时,会舍弃子类所独有的那一部分。 直观地来看,这是通过解引用父类指针后,无法通过它来访问子类类成员变量,但可以通过虚函数表来调用子类重写的虚函数。这一部分可以搜很多...

基类指针指向子类对象

没有指定虚函数, 那么它就只能访问到类型对应的函数基类指针就只能访问到基类函数子类指针就只能访问到子类函数要使用基类访问到子类的函数, 最符合常规的, 就是虚函数了.当然, 你也可以使用非常规的, 比如强制...

虚函数

指向基类指针在操作它的多态类对象时,会根据不同的类对象调用其相应的函数,这函数就是虚函数虚函数用virtual修饰函数名。虚函数的作用是在程序的运行阶段动态地选择合适的成员函数。在派生类中重新定义的...

基类的继承,虚函数,覆盖和隐藏

3、为了节约开发时间和代码量,我们在设计类时可以把类的共享代码,抽象出来形成一基础类(基类)。 4、使用基类+差异生成一新的类的叫派生类 二、继承的语法 1、在设计一类时如果已有的类中有它需要的...

虚函数基类和子类中都存在时,调用情况分析

首先,给出基类animal和子类fish //============================================================== // animal.h // ...// describe: 非虚函数情况下,将子类指针赋给积累指针,验证最终调用 //

纯虚函数、抽象类、虚基类虚函数的关系

1.虚函数的引入 2.虚函数作用 3.关于虚函数的几点说明 4.纯虚函数 5.抽象类 6.虚基类 1.虚函数的引入 先看如下程序,程序后有进一步的解释。如果读者对程序不懂请先复习基础知识。 // // VirtualFun.cpp //...

c++ 基类指针,子类指针,多态

(1)将子类指针赋值给基类指针时,不需要进行强制类型转换,c++编译器将自动进行类型转换。因为子类对象也是一基类对象。 (2)将基类指针赋值给子类指针时,需要进行强制类型转换,c++编译器将不自动进行类型...

纯虚函数虚基类

纯虚函数是在基类中声明的虚函数,它在基类中没有定义,但要求任何派生类都要定义自己的实现方法。在基类中实现纯虚函数的方法是在函数原型后加“=0” virtual void funtion()=0; 虚函数的定义是:virtual void ...

虚函数基类和子类中都存在时,调用情况分析

首先,给出基类animal和子类fish //============================================================== // animal.h // ...// describe: 非虚函数情况下,将子类指针赋给积累指针,验证最终调用 //

关于通过不含析构函数基类类型的指针删除派生类对象的问题

问题时先基于一前提条件:析构函数不含释放其他资源的代码,甚至可以是空函数,甚至甚至都可以干脆的不写。这种情况下是否仍有任何问题。  这个问题的结论是 会导致未定义的行为(但不是内存泄漏那么简单)...

基类指针和派生类指针

派生类对象也“是”基类对象,但两者不同。 派生类对象可以当做基类对象,这是因为派生类包含基类的所有...总结:基类指针和派生类指针指向基类对象和派生类对象的4中方法: 1. 基类指针指向基类对象。(正常使...

C++利用对象、引用、指针调用虚函数

类的大小比起所有成员数据多4字节,表明有虚函数的类的大小还要加上一紧缩的空指针类型的大小。这说明了该在包含虚函数的类中,编译系统自动加入了一些表明类型的信息。 当一类中拥有虚函数时,编译系统将...

dynamic_cast转换指针时,基类需要虚函数

虚函数对于dynamic_cast转换的作用 为何使用dynamic_cast转换指针时,需要虚函数呢。Dynamic_cast转换是在运行时进行转换,运行时转换就需要知道类对象的信息(继承关系等)。如何在运行时获取到这信息——...

C++ NEW的使用及 基类指针转换成派生类指针 及static_cast和dynamic_cast的说明

new的使用 ...3. 当使用new运算符定义一多维数组变量或数组对象时,它产生一指向数组第一元素的指针,返回 的类型保持了除最左边维数外的所有维数   new的三种使用方法(摘自--h

虚函数,虚指针和虚表详解

2. 存在虚函数的类都有一一维的虚函数表叫做虚表。每一类的对象都有一指向虚表开始的虚指针。虚表是和类对应的,虚表指针是和对象对应的。 3. 多态性是一接口多种实现,是面向对象的核心。分为编译多态性和...

相关热词 c#dll vb 调用 c# outlook c#修改表数据 c# 子窗体值返给父窗体 c# label 格式化 c# 程序如何控制摄像头 c# 获取运行时间 c#知识点结构图 微软c# c#解析owl