首页 > 其他分享 >观察基类与派生类中成员函数的调用

观察基类与派生类中成员函数的调用

时间:2023-04-13 20:47:02浏览次数:30  
标签:调用 fn2 fn1 void 基类 DerivedClass 派生类 BaseClass cout

一、问题描述。

用对象和指针来观察基类与派生类中成员函数的调用。

二、设计思路。

1、定义一个拥有fn1,fn2两个成员函数的基类BaseClass

2、由基类BaseClass派生出一个同样拥有fn1,fn2两个成员函数的派生类DerivedClass

3、在主函数中声明一个派生类的对象,及基类与派生类的指针

4、观察运行结果

三、程序流程图

 

 四、代码实现。

#pragma once
#include<iostream>
using namespace std;
class BaseClass
{
public:
BaseClass();
~BaseClass();
void fn1();
void fn2();
};

#include "BaseClass.h"


BaseClass::BaseClass()
{
}


BaseClass::~BaseClass()
{
}
void BaseClass::fn1()
{
cout << "base.fn1()" << endl;
}
void BaseClass::fn2()
{
cout << "base.fn2()" << endl;
}

#pragma once
#include"BaseClass.h"
class DerivedClass:public BaseClass
{
public:
DerivedClass();
~DerivedClass();
void fn1();
void fn2();
};

#include "DerivedClass.h"


DerivedClass::DerivedClass()
{
}

DerivedClass::~DerivedClass()
{
}

void DerivedClass::fn1()
{
cout << "Derived.fn1()" << endl;
}
void DerivedClass::fn2()
{
cout << "Derived.fn2()" << endl;
}

#include<iostream>
#include "DerivedClass.h"
using namespace std;

int main()
{
DerivedClass a;
BaseClass b;
DerivedClass c;
BaseClass *pb=&b;
DerivedClass *pd=&c;
cout << "用对象调用" << endl;
a.fn1(); a.fn2();
cout << "用BaseClass指针调用" << endl;
pb->fn1(); pb->fn2();
cout << "用DerivedClass指针调用" << endl;
pd->fn1(); pd->fn2();
}

 

标签:调用,fn2,fn1,void,基类,DerivedClass,派生类,BaseClass,cout
From: https://www.cnblogs.com/luoqingci/p/17316328.html

相关文章

  • 函数调用栈学习
    栈:在函数调用时,第一个进栈的是主函数中函数调用后的下一条指令(函数调用语句的下一条可执行语句)的地址,然后是函数的各个参数,在大多数的C编译器中,参数是由右往左入栈的,然后是函数中的局部变量。注意静态变量是不入栈的。当本次函数调用结束后,局部变量先出栈,然后是参数,最......
  • 求n的阶乘(递归调用)
    求n的阶乘。#include<iostream>usingnamespacestd;unsignedfac(unsignedm){ unsignedn; if(m==0) n=1; else n=fac(m-1)*m; returnn;}intmain(){ unsignedx,y; cin>>x; y=fac(x); cout<<y; return0;}......
  • ROS学习笔记(二)- 提供服务和调用服务
    书接上回-https://www.cnblogs.com/lihan829/p/17315435.html前面展示了ROS节点发布和订阅消息,这次展示如何提供服务和调用服务。提供服务和调用服务很好理解,概念和行为上并不深奥,就是远程过程调用,可类比为http接口的远程调用,grpc接口的远程调用等等。1,服务提供方,定义服务,服......
  • Vuex module之间调用与读值
    对于模块内部的mutation和getter,接收的第一个参数是模块的局部状态对象state对于模块内部的action,局部状态通过context.state暴露出来,根节点状态则为context.rootState使用全局state和getter,rootState和rootGetters会作为第三和第四参数传入getter,也会通过conte......
  • 让 Spartacus 服务器端渲染引入 long API 调用超时机制的两种配置方法
    两种方法,使用config.backend.timeout={浏览器:...,服务器:...},或者可以更具体地配置,即基于Request粒度,通过将HTTP_TIMEOUT_CONFIGHttpContextToken传递给AngularHttpClient的方法来针对每个具体请求进行配置。在SSR(Node.js)中,超时处理耗时过长的外部http调用是一项尤为重......
  • vue中父子组件调用之头像更新
    问题描述:修改图像的功能,要实现的功能是这样的:点击确认按钮,然后连带着上面的头像也更新,是不是很简单,只需要一个刷新就行,但是事实上没这么简单,因为我的这个项目涉及到三个组件 这里面中间是一个子路由,然后上面是一个组件,左边是一个组件  然后这个就涉及到子父组件传值,这......
  • 观察基类与派生类的构造函数与析构函数的调用顺序
    一、设计思路1.定义一个哺乳动物类Mammal,2.派生出一个狗类Dog,3.定义一个dog类的对象,通过代码的执行顺序来判断观察观察基类与派生类的构造函数与析构函数的调用顺序。二、程序流程图。   三、代码实现。#pragmaonceclassMammal{public: Mammal(); ~Mammal();}......
  • 重构——搬移语句到调用者(Move Statements to Callers),其反向重构:搬移语句到函数(213)
    8.4搬移语句到调用者(MoveStatementstoCallers)反向重构:搬移语句到函数(213)emitPhotoData(outStream,person.photo);functionemitPhotoData(outStream,photo){outStream.write(`<p>title:${photo.title}</p>\n`);outStream.write(`<p>location:${photo......
  • API通用调用帮助类
    1//调用示例2///<summary>3///HttpPath请求4///</summary>5///<paramname="serviceUrl">请求地址</param>6///<paramname="data">发送数据</param>7......
  • JavaWeb之Servlet详解(以及浏览器调用 Servlet 流程分析图)
    Servlet1.什么是ServletServlet(java服务器小程序)他是由服务器端调用和执行的(一句话:是Tomcat解析和执行)他是用java语言编写的,本质就是Java类他是按照Servlet规范开发的(除了tomcat->Servletweblogic->Servlet)功能强大,可以完成几乎所有的网站功能2.开发......