
高手帮忙啊C++
编写程序:声明一个哺乳动物类Mammal,再由此派生出狗类Dog和猫类Cat。程序要求:1.Mammal类中定义名为color和weight的数据成员,分别用来存储动物的...
编写程序:声明一个哺乳动物类Mammal,再由此派生出狗类Dog和猫类Cat。
程序要求:
1. Mammal类中定义名为color和weight的数据成员,分别用来存储动物的颜色和体重.
并在Mammal类中定义一个虚函数print,用于输出color和weight值。
2. 每个类中都定义一个名为count的静态数据成员,用来存储各类对象的总数;
3. 每个类都有构造函数和析构函数,在构造函数中对color和weight进行初始化,
以及执行count++语句,在析构函数中执行count--语句。在Dog和Cat类中输出各自的信息,
输出信息要有所区别;
4. 主函数中以一般方法定义各类若干个对象,用new创建几个对象指针,用delete删除对象指针。
在不同的位置输出各类count的值。最后输出"Main function ends."。 展开
程序要求:
1. Mammal类中定义名为color和weight的数据成员,分别用来存储动物的颜色和体重.
并在Mammal类中定义一个虚函数print,用于输出color和weight值。
2. 每个类中都定义一个名为count的静态数据成员,用来存储各类对象的总数;
3. 每个类都有构造函数和析构函数,在构造函数中对color和weight进行初始化,
以及执行count++语句,在析构函数中执行count--语句。在Dog和Cat类中输出各自的信息,
输出信息要有所区别;
4. 主函数中以一般方法定义各类若干个对象,用new创建几个对象指针,用delete删除对象指针。
在不同的位置输出各类count的值。最后输出"Main function ends."。 展开
4个回答
展开全部
错误代码注释起来了,紧接着是修改后的代码。请自测......
#include<iostream.h>
class
baseclass
{
public:
virtual
~baseclass(){cout<<"~baseclass()"<<endl;}
};
//class
derivedclass
class
derivedclass:public
baseclass
{
public:
~derivedclass(){cout<<"~derivedclass()"<<endl;}
};
int
main()
{
baseclass
*
p;
p=new
derivedclass;
delete
p;
return
0;}
#include<iostream.h>
class
baseclass
{
public:
virtual
~baseclass(){cout<<"~baseclass()"<<endl;}
};
//class
derivedclass
class
derivedclass:public
baseclass
{
public:
~derivedclass(){cout<<"~derivedclass()"<<endl;}
};
int
main()
{
baseclass
*
p;
p=new
derivedclass;
delete
p;
return
0;}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
class
derivedclass后面加上:baseclass
也就是class
derivedclass:baseclass{.....}
derivedclass后面加上:baseclass
也就是class
derivedclass:baseclass{.....}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include<iostream.h>
class baseclass
{
public:
virtual ~baseclass(){cout<<"~baseclass()"<<endl;}
};
class derivedclass:public baseclass{
//注意这里
这里应该是baseclass的派生类
public:
~derivedclass(){cout<<"~derivedclass()"<<endl;}
};
int main()
{
baseclass * p;
p=new derivedclass;
delete p;
return 0;
}
这样做是为了当用一个基类的指针删除一个派生类的对象时,派生类的析构函数会被调用。当然,并不是要把所有类的析构函数都写成虚函数。因为当类里面有虚函数的时候,编译器会给类添加一个虚函数表,里面来存放虚函数指针,这样就会增加类的存储空间。所以,只有当一个类被用来作为基类的时候,才把析构函数写成虚函数。
class baseclass
{
public:
virtual ~baseclass(){cout<<"~baseclass()"<<endl;}
};
class derivedclass:public baseclass{
//注意这里
这里应该是baseclass的派生类
public:
~derivedclass(){cout<<"~derivedclass()"<<endl;}
};
int main()
{
baseclass * p;
p=new derivedclass;
delete p;
return 0;
}
这样做是为了当用一个基类的指针删除一个派生类的对象时,派生类的析构函数会被调用。当然,并不是要把所有类的析构函数都写成虚函数。因为当类里面有虚函数的时候,编译器会给类添加一个虚函数表,里面来存放虚函数指针,这样就会增加类的存储空间。所以,只有当一个类被用来作为基类的时候,才把析构函数写成虚函数。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
class
derivedclass:public
baseclass
少了这一句
derivedclass:public
baseclass
少了这一句
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询