第13周 《C++语言基础》程序阅读——多态性与抽象类 (3)

1、阅读下面的程序,并写出运行结果

(3)纯虚函数

#include <iostream>
using namespace std;
class Base
{
public:
    virtual void Who() =0;
};
class FirstDerived:public Base
{
public:
    void Who() { cout<<"F"; }
};
class SecondDerived:public Base
{
public:
    void Who() { cout<<"S"; }
};
int main()
{
    FirstDerived first_obj;
    SecondDerived second_obj;
    Base &bref=first_obj;
    bref.Who();
    bref=second_obj;
    bref.Who();
    Base *bp;
    bp=&first_obj;
    bp->Who();
    bp=&second_obj;
    bp->Who();
    return 0;
}

预计运行结果:FSFS

实际运行结果:

错误分析:Base &bref=first_obj;这句话意思是bref为first_obj的引用,而bref=second_obj;是用second_obj为first_obj赋值然而并没有数据成员所以并没有什么乱用。所以输出FFFS。

时间: 2024-12-14 09:49:40

第13周 《C++语言基础》程序阅读——多态性与抽象类 (3)的相关文章

2.6-Java语言基础(程序流程控制)

判断结构 选择结构 循环结构 2.6.1  判断结构 if语句 三种格式: 1.  if(条件表达式) { 执行语句: } 2.  if(条件表达式) { 执行语句: } else { 执行语句: } 3. if(条件表达式) { 执行语句: } else if (条件表达式) { 执行语句: } -- else { 执行语句: } if语句特点: a,每一种格式都是单条语句. b,第二种格式与三元运算符的区别:三元运算符运算完要有值出现.好处是:可以写在其他表达式中. c,条件表达式无论写成什

大数据spark学习第一周Scala语言基础

Scala简单介绍 Scala(Scala Language的简称)语言是一种能够执行于JVM和.Net平台之上的通用编程语言.既可用于大规模应用程序开发,也可用于脚本编程,它由由Martin Odersk于2001开发.2004年開始程序执行在JVM与.Net平台之上.由于其简洁.优雅.类型安全的编程模式而受到关注. Scala的创建者——Martin Odersk 在Scala的创建之初,并没有怎么引起重视,随着Apache Spark和Apache Kafka这样基于Scala的大数据框架

Java之J2se-Java语言基础(程序结构) 教学视频发布了,请小伙伴们前往观看

视频地址如下: http://v.youku.com/v_show/id_XODA5NTM3NTAw.html

2018.6.13 Java语言基础复习总结

Java语言基础与面向对象编程实践 第一章 初识Java 1.1机器语言 机器语言是指一台计算机全部的指令集合.机器语言室友0和1组成的二进制数,是一串串由0和1组成的指令序列,可将这些指令序列交给计算机执行. 1.2汇编语言 负责把汇编语言翻译成二进制的机器语言,这种翻译程序就是汇编程序. 1.3高级语言 1954年第一个完全脱离机器硬件的高级语言FORTRAN诞生 1.3.1C语言 是一种计算机程序设计语言,它既有高级语言的特点,又具有汇编语言的特点. 1.3.2 C++语言 是具有面向对象

java--java语言基础(3)--黑马程序员

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- java语言基础(3) 主要内容:<运算符.键盘录入.顺序结构.选择结构if.三元运算符.选择结构switch.> 1 位运算符的基本用法1 位运算符:是对整数的二进制直接进行操作的 1.<< : 左移:左侧高位丢弃,右侧补0.左移一位,相当于原数 * 2 ; 实际移动的位数 = 要移动的位数 % 32; 2.>> : 带符号右移:右移一位,右侧的最低位丢弃,左侧高位

java--java语言基础(4)--黑马程序员

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- java语言基础(4) 主要内容:<循环结构while.do...while.for.嵌套循环.跳转> 1 循环结构while语句的格式和基本使用 第一种循环结构: while循环: 格式: while(逻辑表达式){ //循环体代码.需要重复执行的代码 } 说明: 1.逻辑表达式:必须返回一个boolean类型的结果: 2.如果返回true:执行循环体: 3.循环体执行完毕,回到上面的&q

java--学习java从这里开始:Java语言基础(1)《基础知识篇》--黑马程序员

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- Java语言基础(1) 从这篇日记开始说一些关于java的语言基础知识, 1  Java语言概述 java的创始人——詹姆斯·高斯林(James Gosling) 1977年获得了加拿大卡尔加里大学计算机科学学士学位,1983年获得了美国卡内基梅隆大学计算机科学博士学位,毕业后到IBM工作,设计IBM第7一代工作站NeWS系统,但不受重视.后来转至Sun公司,1990年,与Patrick,Na

Lua语言基础汇总(13)-- Lua中一些常用的库

前言 这篇文章将会来一些比较轻松的内容,就是简单的介绍一下Lua中几个常用的库.简单的说就是几个API的介绍.所以说,看起来比较容易,也没有多大的分量.就是纯粹的总结.使用库就是为了方便我们的开发,提高开发效率,同时也能保证代码的质量.希望大家以后也不要重复造轮子了. 数学库 数学库(math)由一组标准的数学函数构成.这里主要介绍几个常用的函数,其它的大家可以自行百度解决. 1. 三角函数(sin,cos,tan……) 所有的三角函数都使用弧度单位,可以用函数deg(角度)和rad(弧度)来转

Lua语言基础汇总(7) -- 协同程序

前言 协同程序与线程差不多,也就是一条执行序列,拥有自己独立的栈.局部变量和指令指针,同时又与其它协同程序共享全局变量和其它大部分东西.从概念上讲,线程与协同程序的主要区别在于,一个具有多个线程的程序可以同时运行几个线程,而协同程序却需要彼此协作的运行.就是说,一个具有多个协同程序的程序在任意时刻只能运行一个协同程序,并且正在运行的协同程序只会在其显式地要求挂起时,它的执行才会暂停. 协同程序基础 Lua将所有关于协同程序的函数放置在一个名为“coroutine”的table中.函数create