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;
}