,一个C++小程序出有关问题(陷入死循环了),求解释
求助,一个C++小程序出问题(陷入死循环了),求解释!
自己编的一个小程序来练习类的用法,
程序功能:根据选择来输出boy say:Hello,或Girl say :world。
问题:
输入0、1、2没问题,直接输入其它数字或字母也没问题,但先输入1,再输入2,最后输入字母时陷入死循环了,求解释。
(调试环境 visual studio 2012)
------解决方案--------------------
//主函数
#include<iostream>
#include <limits>
using namespace std;
//头文件human.h ,父类
#pragma once
class human
{
public:
human(void);
自己编的一个小程序来练习类的用法,
程序功能:根据选择来输出boy say:Hello,或Girl say :world。
问题:
输入0、1、2没问题,直接输入其它数字或字母也没问题,但先输入1,再输入2,最后输入字母时陷入死循环了,求解释。
(调试环境 visual studio 2012)
//主函数
#include<iostream>
#include"human.h"
#include"boy.h"
#include"girl.h"
using namespace std;
int main()
{
human* p;
int choice=0;
while(choice<10)
{
cout<<"请选择:"<<"0.Exet; 1.Boy say; 2.Girl say"<<endl;
cin>>choice;
bool quit=false;
switch(choice)
{
case 0:
quit=true;
break;
case 1:
p=new boy;
p->say();
delete p;
break;
case 2:
p=new girl;
p->say();
delete p;
break;
default:
cout<<"请选择0-2:"<<endl;
break;
}
if(quit)
{
break;
}
}
return 0;
}
//头文件human.h ,父类
#pragma once
class human
{
public:
human(void);
virtual void say(){}
virtual ~human(void);
};
//父类函数
#include "human.h"
#include<iostream>
using namespace std;
human::human(void)
{
cout<<"构造human"<<endl;
}
human::~human(void)
{
cout<<"析构human"<<endl;
}
//子类boy头文件
#include<iostream>
#include"human.h"
using namespace std;
#pragma once
class boy: public human
{
public:
boy(void);
virtual void say();
virtual ~boy(void);
};
//boy.h的函数,human的子类
#include "boy.h"
boy::boy(void)
{
cout<<"构造boy"<<endl;
}
void boy::say(void)
{
cout<<"Boy says: Hello"<<endl;
}
boy::~boy()
{
cout<<"析构boy"<<endl;
}
//girl.h,human之类
#include<iostream>
#include"human.h"
using namespace std;
#pragma once
class girl: public human
{
public:
girl(void);
virtual void say();
virtual ~girl(void);
};
//girl.h的函数
#include<iostream>
using namespace std;
#include "girl.h"
girl::girl(void)
{
cout<<"构造girl"<<endl;
}
void girl::say(void)
{
cout<<"Girl says: World!"<<endl;
}
girl:: ~girl(void)
{
cout<<"析构girl"<<endl;
}
------解决方案--------------------
//主函数
#include<iostream>
#include <limits>
using namespace std;
//头文件human.h ,父类
#pragma once
class human
{
public:
human(void);