为了账号安全,请及时绑定邮箱和手机立即绑定
题目要求的结果不对吧,感觉少了个animal,因为后面销毁了个animal,就一定构造了个animal
// 通过动物类实例化狗类
Animal *p = new Dog("dog");
// 调用成员函数
p->eat();
p->move();
// 释放内存
delete p;
p = NULL;
return 0;
// 虚析构函数
virtual ~Animal(){cout << "~Animal" << endl;}
// 虚成员函数
void eat(){cout << "Animal--" << m_strName << "-- eat" << endl;}
// 纯虚函数
virtual void move() {cout<<"move()"<<endl;}
public:
// 数据成员
string m_strName;
};
class Animal
{
public:
// 默认构造函数
Animal()
{};
// 含参构造函数
Animal(string name){m_strName = name; cout << "Animal" << endl;}
public:
// 数据成员
string m_strName;
};
// 虚成员函数eat()
virtual void eat(){cout << "Dog--" << m_strName << " -- eat" << endl;}
// 虚成员函数move()
virtual void move(){cout << "Dog--" << m_strName << " -- move" << endl;}
// 默认构造函数
Dog(){};
// 含参构造函数
Dog(string name){m_strName = name; cout << "Dog" << endl;}
// 虚析构函数
virtual ~Dog(){cout << "~Dog" << endl;}
class Dog : public Animal{
public:
我还以为我错了,,妈蛋,对了答案一模一样,,还通过不了~~~原来不只有我一个人~~·
内联函数是什么忘记了
用子类指针实例化就不用虚函数了吧

已采纳回答 / pp_pcz
#ifndef 是判断有没有定义后面的那个宏,如果没有就进行后面的宏定义并且定义相应的类或其他,有的话就不进行下面的定义,这样可以避免在多个文件引入头文件时造成的重复定义。
谢谢老师 谢谢慕课网
其实就是为了省事 把foraging和carry两个函数写在一个函数里
老师讲的很好
需要添加#include<typeinfo>
课程须知
本课程是C++初级课程 1、熟练掌握C++语言基础语法
老师告诉你能学到什么?
1、虚函数、虚析构函数、纯虚函数 2、抽象类和接口类 3、运行时类别异常 4、异常处理

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!

本次提问将花费2个积分

你的积分不足,无法发表

为什么扣积分?

本次提问将花费2个积分

继续发表请点击 "确定"

为什么扣积分?

举报

0/150
提交
取消