| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 692 人关注过本帖
标题:求教,谁能给解释下
只看楼主 加入收藏
hjb5074
Rank: 1
等 级:新手上路
帖 子:19
专家分:2
注 册:2012-5-31
结帖率:80%
收藏
已结贴  问题点数:20 回复次数:10 
求教,谁能给解释下
#include <iostream>
using namespace std;

class A
{
public:
    virtual   int get(){cout<<"a"<<endl;return 2;}
};
class B :public A
{
public:
    int get(){cout<<"b"<<endl;return 3;}
};

void main()
{
    A *a;
    int i;
    bool quit=false;
    while (1)
    {
        cout<<"1.父类,2子类,3退出  ";
            cin>>i;
        switch(i)
        {
        case 1:a=new A;
            break;
        case 2:a=new B;
            break;
        case 3:quit=true;
            break;
        default:cout<<"请正确输入选项!!";
            break;
        }
        
        if(quit==true)
        {
            break;
        }
        cout<<a->get()<<endl;
        delete a;
    }
   
}
输入1、2、3以外的数字是报错!!
搜索更多相关主题的帖子: namespace default include public 
2013-03-27 11:32
peach5460
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:武汉
等 级:贵宾
威 望:30
帖 子:2780
专家分:6060
注 册:2008-1-28
收藏
得分:0 
你自己的switch不是写的除了123都报错么?
这是不是你自己的程序啊?

我总觉得授人以鱼不如授人以渔...
可是总有些SB叫嚣着:要么给代码给答案,要么滚蛋...
虽然我知道不要跟SB一般见识,但是我真的没修炼到宠辱不惊...
2013-03-27 11:38
peach5460
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:武汉
等 级:贵宾
威 望:30
帖 子:2780
专家分:6060
注 册:2008-1-28
收藏
得分:0 
以下是引用peach5460在2013-3-27 11:38:52的发言:

你自己的switch不是写的除了123都报错么?
这是不是你自己的程序啊?


哦.soga
你想想你的逻辑有什么问题
指针没玩熟啊...搞了个野指针出来了

PS:我之前还以为你说得报错是指的程序说请输入正确的数咧...

我总觉得授人以鱼不如授人以渔...
可是总有些SB叫嚣着:要么给代码给答案,要么滚蛋...
虽然我知道不要跟SB一般见识,但是我真的没修炼到宠辱不惊...
2013-03-27 11:40
fxbszj
Rank: 5Rank: 5
来 自:阿修罗界
等 级:职业侠客
威 望:4
帖 子:163
专家分:331
注 册:2012-10-8
收藏
得分:0 
你自己只给自己盖了个3层楼,你上你家6楼给我看看
2013-03-27 12:36
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
收藏
得分:0 
defalut执行之后会执行什么?这种错误实在不应该啊


[fly]存在即是合理[/fly]
2013-03-27 13:12
shmilyflf
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:5
帖 子:356
专家分:1008
注 册:2012-12-9
收藏
得分:20 
#include <iostream>
 using namespace std;
 
class A
{
 public:
     virtual   int get(){cout<<"a"<<endl;return 2;}
 };
 class B :public A
 {
 public:
     int get(){cout<<"b"<<endl;return 3;}
 };
 
void main()
 {
     A *a;
     int i;
     bool quit=false;
     bool again=false;//定义一个bool型指示是否重新输入
     while (1)
     {
         again=false;//开始置again为false,表示不需要重新输入
         cout<<"1.父类,2子类,3退出  ";
             cin>>i;
         switch(i)
         {
         case 1:a=new A;
             break;
         case 2:a=new B;
             break;
         case 3:quit=true;
             break;
         default:cout<<"请正确输入选项!!"<<endl;
             again=true;//如果需要重新输入,置again为true
             break;
         }
         if(false==again)//当不需要重新输入时执行下面的
         {
            if(quit==true)
            {
                break;
            }
            cout<<a->get()<<endl;//你的错误是当输入非1,2,3的数时,a没有初始化,但是你在这里使用了,当然崩溃了。
            delete a;
         }
     }  
}
2013-03-27 14:22
peach5460
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:武汉
等 级:贵宾
威 望:30
帖 子:2780
专家分:6060
注 册:2008-1-28
收藏
得分:0 
以下是引用shmilyflf在2013-3-27 14:22:28的发言:

#include <iostream>
 using namespace std;
 
class A
{
 public:
     virtual   int get(){cout<<"a"<<endl;return 2;}
 };
 class B :public A
 {
 public:
     int get(){cout<<"b"<<endl;return 3;}
 };
 
void main()
 {
     A *a;
     int i;
     bool quit=false;
     bool again=false;//定义一个bool型指示是否重新输入
     while (1)
     {
         again=false;//开始置again为false,表示不需要重新输入
         cout<<"1.父类,2子类,3退出  ";
             cin>>i;
         switch(i)
         {
         case 1:a=new A;
             break;
         case 2:a=new B;
             break;
         case 3:quit=true;
             break;
         default:cout<<"请正确输入选项!!"<<endl;
             again=true;//如果需要重新输入,置again为true
             break;
         }
         if(false==again)//当不需要重新输入时执行下面的
         {
            if(quit==true)
            {
                break;
            }
            cout<<a->get()<<endl;//你的错误是当输入非1,2,3的数时,a没有初始化,但是你在这里使用了,当然崩溃了。
            delete a;
         }
     }  
}


解释得好详细呀

我总觉得授人以鱼不如授人以渔...
可是总有些SB叫嚣着:要么给代码给答案,要么滚蛋...
虽然我知道不要跟SB一般见识,但是我真的没修炼到宠辱不惊...
2013-03-27 15:37
hjb5074
Rank: 1
等 级:新手上路
帖 子:19
专家分:2
注 册:2012-5-31
收藏
得分:0 
回复 6楼 shmilyflf
非常感谢!解释的非常好,这下完全明白了!
2013-03-27 15:54
peach5460
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:武汉
等 级:贵宾
威 望:30
帖 子:2780
专家分:6060
注 册:2008-1-28
收藏
得分:0 
晕,回答了半天没分
收到的鲜花
  • azzbcc2013-03-27 16:33 送鲜花  20朵   附言:我给啦啦啦啦啦

我总觉得授人以鱼不如授人以渔...
可是总有些SB叫嚣着:要么给代码给答案,要么滚蛋...
虽然我知道不要跟SB一般见识,但是我真的没修炼到宠辱不惊...
2013-03-27 16:31
hjb5074
Rank: 1
等 级:新手上路
帖 子:19
专家分:2
注 册:2012-5-31
收藏
得分:0 
回复 9楼 peach5460
不好意思,下次吧,你给将详细点,我给你个满分,因为我是老菜嘛,不将详细了我可是弄不明白的;
2013-04-06 15:48
快速回复:求教,谁能给解释下
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017329 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved