C++对象模型--有重写的单继承

有重写的单继承

派生类中重写了基类的print()函数。

//Derived_Overwrite.h
#pragma once
#include "base.h"

class Derived_Overrite : public Base
{
public:
    Derived_Overrite(int);
    virtual ~Derived_Overrite(void);
    virtual void print(void) const;

protected:
    int iDerived;
};

  

//Derived_Overwrite.cpp

#include "stdafx.h"
#include "Derived_Overwrite.h"

Derived_Overrite::Derived_Overrite(int i):Base(0)
{
	iDerived = i;
	cout<<"Derived_Overwrite::Derived_Overwrite()"<<endl;
}

Derived_Overrite::~Derived_Overrite(void)
{
	cout<<"Derived_Overwrite::~Derived_Overwrite()"<<endl;
}

void Derived_Overrite::print(void) const
{
	cout<<"Derived_Overwrite::print(), iDerived " << iDerived << endl;
}

  Base、Derived_Overwrite的类图如下所示:

重写print()函数在虚函数表中表现如下:

为了验证上述C++对象模型,我们编写如下测试代码。

时间: 2024-10-18 08:05:05

C++对象模型--有重写的单继承的相关文章

探索单继承对象模型

探索单继承对象模型 class Base { public : virtual void func1() { cout<<"Base::func1" <<endl; } virtual void func2() { cout<<"Base::func2" <<endl; } private : int a ; }; class Derive :public Base { public : virtual void fu

C++对象模型:单继承,多继承,虚继承

C++对象模型 有两个概念可以解释C++对象模型: 语言中直接支持面向对象程序设计的部分.对于各种支持的底层实现机制. 单继承(父类含虚函数) 1 #include <iostream> 2 #include<vector> 3 using namespace std; 4 5 class Base 6 { 7 public: 8 void fun1(){ cout << "Base fun1" << endl; } 9 virtual

C++里的继承和多态(下)——单继承、多继承、菱形继承(含虚拟函数的继承)

1.带有虚函数的类 class Base { public:                  virtual void FunTest1()                 {                                 cout << "Base::FunTest1()" << endl;                 }                  virtual void FunTest2()                 

c++继承汇总(单继承、多继承、虚继承、菱形继承)

一.C++中的对象模型 1. 概念 语言中直接支持面向对象程序设计的部分: 对于各种支持的底层实现机制.(没看懂……) 2. 类中的成员分类 a) 成员函数 i. static function ii. non static function iii. virtual function b)  数据成员 i. static member data ii. non static member data 3. C++对象模型 a) 类对象内存布局中的包括 i. non static member d

单继承、多继承--问题解析

public.protected.private不仅是类中的访问限制符,在c++中"继承"中,它们还表示继承关系,public表示公有继承,protected表示受保护的,private表示私有的,如下图: B类继承A类,我们称A类为基类(父类),称B类为派生类(子类),子类包括父类的成员变量和成员函数,三种继承关系基类成员在派生类中的访问关系变如下. 下面是以B继承A的详细代码: //单继承    A->B class A { public:      void fun1()

C++中的类继承之单继承&amp;多继承&amp;菱形继承

 C++中的类继承之单继承&多继承&菱形继承 单继承是一般的单一继承,一个子类只 有一个直接父类时称这个继承关系为单继承.这种关系比较简单是一对一的关系: 多继承是指 一个子类有两个或以上直接父类时称这个继承关系为多继承.这种继承方式使一个子类可以继承多个父类的特性.多继承可以看作是单继承的扩展.派生类具有多个基类,派生类与每个基类之间的关系仍可看作是一个单继承.多继承下派生类的构造函数与单继承下派生类构造函数相似,它必须同时负责该派生类所有基类构造函数的调用.同时,派生类的参数个数必须包

java类为什么是单继承。类的继承,实现接口。

java中提供类与类之间提供单继承. 提供多继承会可能出现错误,如:一个类继承了两个父类,而两个父类里面都有show()方法. class Fulei1{ public void show(){ System.out.println("父类1"); } } class Fulei2{ public void show(){ System.out.println("父类2"); } } class Zilei extends fulei1,fulei2{ public

js 完成单继承

//1.使用prototype完成单继承. //定义一个A类 function A(){ } //为A类动态调用属性color,与方法sayColor A.prototype.color = "blue"; A.prototype.sayColor = function(){ alert(this.color); }; //创建了一个B类 function B(){ } //让B继承自A B.prototype=new A(); //new出A的对象赋值给B的原型,B中就包含了A中的所

C#单继承

public class Animal { private string _name;//动物名称 public string Name { get { return _name; } set { _name = value; } } public virtual string Burrow()//定义动物行为 { return "动物行为:"; } } public class Mouse : Animal { public Mouse() { base.Name = "老