`
vanillalyx
  • 浏览: 62227 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

c++关于继承调用的问题 父类指针指向子类

阅读更多

#include <iostream>
using namespace std;
class A
{
public:
	virtual void F(){
		cout<<"A::F()"<<endl;G();
	}
	void G(){cout<<"A::G()\n";}
	void H(){cout<<"A::H()\n";G();}
};

class B :public A
{
public:
	virtual void F(){
		cout<<"B::F()"<<endl;G();
	}
	void G(){cout<<"B::G()\n";}

};

class C :public B
{
public:

	void G(){cout<<"C::G()\n";}

};
void main()
{

	C c;
	A *ap = &c;
	ap->F(); //因为A中的F被B覆盖了且是virtual类型的,调用的是B的F,因此B中的F调用的是B中的F
	//output : B::F()  B::G()
	B b;
	b.H(); //H中调用的函数是H所在类的函数,无论那个函数是否被继承覆盖
	//output : A:H()  A::G()
}
 
分享到:
评论

相关推荐

    (转)多重继承下的虚函数表

    多态就是用父类型的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”。而虚函数表在这种多态机制中起了核心调度的作用。由于是编译器在后台操作,所以它被...

    c.c++找工作面试重点结构图-mindmanager

    面向对象中的继承指类的继承,类似父子继承 1、子类拥有父类的所有成员变量和成员函数 2、子类就是一种特殊的父类 3、子类对象可以当作父类对象使用(赋值兼容性原则) 4、子类可以拥有父类没有的方法和属性..........

    C++虚函数表实例分析

    多态是C++面向对象程序设计的一个重要特性。以前看到虚函数觉得很神奇,为...当我们通过父类指针来操作一个子类的时候,调用虚函数,都是通过虚函数表+固定的偏移,这样运行期多态便实现了。 在深度《深度》这本书中

    摩托罗拉C++面试题

    这样使得两个指针指向同一份资源,造成对同一份析构两次,程序崩溃。 临时对象的开销比局部对象小些。 11.结合1个你认为比较能体现OOP思想的项目,用UML来描述。(最好这个项目继承,多态,虚函数都有体现)这个...

    C语言和C++的重要知识点提炼.rar

    就会为每个含有虚函数的类创建一个虚函数表(vtable),该表是一个一维数组,存放的是虚函数的地址,子类中如果没有虚函数也会从基类中继承虚函数表,虚表创建之后还会创建一个虚函数指针来指向虚表,即(vptr)。

    C++ 中dynamic_cast的用法

    作用:将一个基类对象指针(或引用)cast到继承类指针,dynamic_cast会依据基类指针是否真正指向继承类指针来做对应处理, 即会作一定的推断。 对指针进行dynamic_cast,失败返回null,成功返回正常cast后的对象...

    最新名企标准通用C++面试题,

    因为GetMemory返回的是指向“栈内存”的指针,该指针的地址不是 NULL,但其原现的内容已经被清除,新内容不可知。 void GetMemory2(char **p, int num) { *p = (char *)malloc(num); } void Test(void) { char *...

    易语言-动态多态编程的好处及简单例子

    所以,用父类的指针指向子类,是为了面向接口编程。大家都遵循这个接口,弄成一样的,到哪里都可以用。 3,提高程序的可复用性,提高可扩充行和可维护性,一个接口,多种实现,各自不同. 动态多态的基础知识: 首先...

    易语言动态多态编程简单例子-易语言

    所以,用父类的指针指向子类,是为了面向接口编程。大家都遵循这个接口,弄成一样的,到哪里都可以用。 3,提高程序的可复用性,提高可扩充行和可维护性,一个接口,多种实现,各自不同. 动态多态的基础知识:首先百度...

    传智播客扫地僧视频讲义源码

    06_父类指针的步长和子类指针的步长不一样 07_课堂答疑什么时候子类的步长和父类的步长一样 08_抽象类基本语法 09_抽象类在多继承中的应用 10_面向抽象类编程_计算程序员工资 11_中午课程回顾 12_信息系统框架集成第...

    MFC的程序框架剖析

    在构造子类对象时,会自动调用父类的构造函数,此时在父类的构造函数中的this指针所指向的是子类对象地址 10、AfxWinMain函数 MFC程序的WinMain函数是通过调用AfxWinMain函数来完成它的功能的 注:Afx前缀的函数代表...

    Java 语言基础 —— 非常符合中国人习惯的Java基础教程手册

    实际上是一个指针,此指针指向对象所占有的内存区域。 因此,对象名(变量)实际上存放的是一个被实例化之后的对象所占有的内存区域 的指针。 例如: type objectName = new type ( [paramlist] ); 运算符 new 为...

    小型售货机

    class Gooddata: public Data //公有继承父类Data { protected: char Goodname[30]; //定义货物名 char Exp[30]; //定义保质期 char Pubname[30]; //定义生产厂商名 public: void Set_Goodnum(int num); //...

Global site tag (gtag.js) - Google Analytics