注册 登录
编程论坛 C++教室

yahoo......编程挺好玩。。。

lianjiecuowu 发布于 2011-05-25 13:28, 529 次点击
#include<iostream>
using namespace std;
class A
{
      public:
      virtual void get(){cout<<"输出的是A"<<endl;}
};
class B:public A
{
      public:
      void get(){cout<<"输出的是B"<<endl;}
};
class C:public A
{
      public:
      void get(){cout<<"输出的是C"<<endl;}
};
void a(A);
void b(A*);
void c(A&);
int main()
{
    while(1)
    {
            cout<<"1.A  2.B  3.C  4.quit:"<<endl;
            A*p=0;
            int choice;
            cin>>choice;
            bool quit=false;
            switch(choice)
            {
                          case 1:
                               p=new A;
                               a(*p);   //创建A类对象,并用p保存该对象的地址,*p代表的是创建的A类对象
                               break;
                          case 2:
                               p=new B;
                               b(p);    //创建B类对象,p是保存B类对象的地址,p作为参数供b()使用
                               break;
                          case 3:
                               p=new C;
                               c(*p);   //*p代表C类对象,供C()使用
                               break;
                          case 4:
                               quit=true;
                               break;
                          default:
                               p=NULL;cout<<"1.A  2.B  3.C  4.quit:"<<endl;
                               break;
            }
            if(quit==true)
            break;
            
    }
    system("pause");
    return 0;
   
}
void a(A a)
{
     a.get();
     
}
void b(A*b)
{
     b->get();
}
void c(A&c)
{
     c.get();
}
4 回复
#2
crystal1112011-05-27 23:34
想请教一下这个应该如何理解呀
A*p=0;

#3
lianjiecuowu2011-05-28 07:21
定义指针变量,并初始化为0
#4
BlueGuy2011-06-12 16:23
你这看的是 谭浩强 的书吧?
#5
lianjiecuowu2011-06-12 18:13
额....好像不是啊,是《零基础c++》
1