鱼C论坛

 找回密码
 立即注册
查看: 2827|回复: 2

关于delete 和new 的问题

[复制链接]
发表于 2012-7-31 22:50:40 | 显示全部楼层 |阅读模式
1鱼币
#include<iostream>
#include<string>
using namespace std;
class Pet
{
public:
Pet(std::string theName);
~Pet();
void eat();
void sleep();
virtual void play()=0;                       
protected:
std::string name;

};
class Cat:public Pet
{
public:
Cat(std::string theName);
~Cat();
void climb();
void play();
};
class Dog:public Pet
{
public:
Dog(std::string theName);
~Dog();
void bark();
void play();

};
Pet::Pet(std::string theName)
{
name=theName;
}
void Pet::eat()
{
std::cout<<name<<"正在吃东西!\n";
}
void Pet::sleep()
{
std::cout<<name<<"正在睡觉!\n";
}
/*void Pet::play()
{
std::cout<<name<<"正在玩耍!\n";
}*/
Cat::Cat(std::string theName):Pet(theName)
{

}
void Cat::climb()
{
std::cout<<name<<"正在爬树!\n";
}
void Cat::play()
{
//Pet::play();                  
std::cout<<name<<"玩毛线球!\n";
}
Dog::Dog(std::string theName):Pet(theName)
{

}
void Dog::bark()
{
std::cout<<name<<"正在大叫!\n";
}
void Dog::play()
{
//Pet::play();
std::cout<<name<<"正在玩骨头!\n";
}
int main()
{
Pet *cat=new Cat("加菲");
                           
Pet *dog=new Dog("欧迪");
cat->sleep();
cat->eat();
cat->play();

dog->sleep();
dog->eat();
dog->play();
delete cat;          //这里问什么不能delete 啊?加上这两句delete 就过不了, 不加就过了
delete dog;
while(1);
return 0;
}

最佳答案

查看完整内容

你没有定义析构函数
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-7-31 22:50:41 | 显示全部楼层
你没有定义析构函数
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-8-1 11:51:35 | 显示全部楼层
嗯。。昨天晚上自己解决了。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-6-15 03:07

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表