继承与多态-C++一道关于继承的题目,求大神解答,感激不尽

问题描述

C++一道关于继承的题目,求大神解答,感激不尽
  1. Dynamic_cast

Total: 65 Accepted: 22

Time Limit: 1sec Memory Limit:256MB
Description

Three classes A, B and C are shown below:

class A {
public:
virtual ~A() {};
};
class B: public A {};
class C: public B {};

You are to implement a function string verify(A *), such that it returns "grandpa" if the passed-in argument points to a class A object, and "father" for a class B object , "son" for a class C object.

Your submitted source code should include the whole implementation of the function verify, but without any class defined above.
No main() function should be included.

解决方案

 #include <iostream>
#include <string>
using namespace std;

class A {
public:
virtual ~A() {};
public: virtual string gettype()
{
    return "grandpa";
}
public: static string verify(A * a)
{
    return a->gettype();
}
};

class B: public A
{
public: virtual string gettype()
{
    return "father";
}
};

class C: public B
{
public: virtual string gettype()
{
    return "son";
}
};

int main(int argc, char* argv[])
{
    A a;
    B b;
    C c;
    cout << A::verify(&a) << endl;
    cout << A::verify(&b) << endl;
    cout << A::verify(&c) << endl;
    return 0;
}

解决方案二:

grandpa
father
son
Press any key to continue

解决方案三:

caozhy的答案是正确的

解决方案四:

子类的构造函数需要调用父类的构造函数

解决方案五:

题本身没难度。。请认真审题

解决方案六:

注意看题目:只写一个函数,不能包括以上的类,也不能包括main函数

string verify(A* pa){
    B* pb=dynamic_cast(pa);
    C* pc=dynamic_cast(pa);
    if(pc != NULL)
      return "son";
    if(pb != NULL)
      return "father";
    if(pa != NULL)
      return "grandpa";
    return NULL;
}

时间: 2025-01-08 05:53:17

继承与多态-C++一道关于继承的题目,求大神解答,感激不尽的相关文章

字符-一道acm水题 all in all 一直找不出错误 求大神解答

问题描述 一道acm水题 all in all 一直找不出错误 求大神解答 描述字符串s和t均由字母组成,若在t中除去一些字母能够得到s,我们就说s是t的一个子串.比如abc就是acbefc的子串(acbefc去掉第二.第四.第五个字符后就得到abc)输入有若干组输入数据,每组一行,分别为字符串s和t,s与t之间用空格隔开输出对于一组s与t,若s是t的子串,则输出Yes,否则输出No 样例输入sequence subsequence abc acb VERDI vivaVittorioEmanu

c++-一道OJ上的题,数的划分,求大神解答

问题描述 一道OJ上的题,数的划分,求大神解答 有N个排列好的数,不改变排列次序,要分成K个部分,每个部分至少有一个数, (其中K <=N),若将每一个部分的数相乘,然后将K个部分相加,则可以得到一个表达式,求这个表达式的最大数值. 输入格式文件第一行为2个整数N.K下面N行为N个整数(N<=100,整数的范围都在整型以内)样例输入5 2 12345 样例输出121 我的思路是动态规划:以f(ij)表示分成i组,最后一个数是j的最大数值.以下是我的代码: #include <iostre

出现频率-一道C语言编程题,本人初学者,求大神解答

问题描述 一道C语言编程题,本人初学者,求大神解答 编写程序实现功能:数据文件story.txt是一篇英文小故事,请先统计其中26个字母的出现次数. 要求一:再根据用户要求,输出某个字母的出现次数,直到用户输入#为止. 要求二:请输出出现频率最高的三个字母和它们的出现次数. 解决方案 #include #include #include int main() { int alpha[26]={0}; //用于计数26个字母出现的次数 FILE *text; //FILE 指针 char ch;

调用函数-一道C语言的题目,求大神解答

问题描述 一道C语言的题目,求大神解答 输入一个正整数,逐位分割该数的每一位数字,求由数字所构成的最大整数.例如:输入624891,得到最大整数:986421.要求定义和调用函数计算并返回一个x可构成的最大整数. 解决方案 #include #define N 20 int fun(int n) { int x,t,s[N]={0},i,j,len; for(len=0;x!=0;len++) { x=n/10; s[len]=n%10; n=x; } for(i=0;i<len-1;i++)

冒泡排序 noj-noj一道冒泡排序,不能通过,求大神解答

问题描述 noj一道冒泡排序,不能通过,求大神解答 题目描述 给定输入排序元素数目n和相应的n个元素,写出程序,利用内排序算法中冒泡排序算法进行排序,并输出排序过程中每趟及最后结果的相应序列. 输入 共两行,第一行给出排序元素数目n,第二行给出n个元素,1≤n≤400,每个元素值范围为 [0,100000) 输出 三个部分 第1部分为两行,第1行输出文字"Source:",第2行给出原始序列: 第2部分,开始输出文字"Bubble Sort:",后续输出简单选择排序

内存管理-一道编程题用c语言实现这些功能时间有限1天时间求大神解答

问题描述 一道编程题用c语言实现这些功能时间有限1天时间求大神解答 有用户空间100kb,并规定作业的相应程序浇入内存连续区域,并不能被移动.作业与进程均采用sjf算法.输入为一组作业的进入时间,需要的内存容量(不超过100k)和运行时间. 要求: (1)按时间顺序给出每个作业的执行顺序,开始时间和结束时间,以及发生调度时内存各分区的状态: (2)计算这组作业的平均周转时间和平均带权周转时间: (3)实现作业一级调度和进程一级调度,包括调度算法和数据结构: (4)实现动态分区内存管理,包括内存分

c语言-一道acmC语言题目,求大神解答

问题描述 一道acmC语言题目,求大神解答 描述国庆前每日一弹其中一道题是一个递推公式:f(n)=f(n-1)+f(n-2).现在已知f(1)=1f(2)=1.现在请你设计一个程序计算第n项对520取余的值(%520). 输入多组输入:对于每组输入:只有一行,一个n(0<n≤10^9),表示第n项.输出输出f(n)%520的值.样例输入 解决方案 如果有a = b+c,那么有a%520 = (b%520 + c%520)%520,可以照这样递推上去吧.不会溢出,就是不知道时间会不会超时. 解决方

继承-求大神回答我的疑问,这是关于多态的解释

问题描述 求大神回答我的疑问,这是关于多态的解释 鸟类封装了 翅膀类和moo方法:另外有两个类都继承鸟类并重写了moo方法,分别是鹦鹉和麻雀如下: 鹦鹉类: public class Parrot extends Bird{ public void moo(){ System.out.println("鹦鹉的叫声"); } } 麻雀类: public class Sparrow extends Bird{ public void moo(){ System.out.println(&q

dynamic- Dynamic_cast C++类与对象问题 继承和多态问题,求大神修改

问题描述 Dynamic_cast C++类与对象问题 继承和多态问题,求大神修改 Dynamic_cast Total: 65 Accepted: 22 Time Limit: 1sec Memory Limit:256MB Description Three classes A, B and C are shown below: class A { public: virtual ~A() {}; }; class B: public A {}; class C: public B {};