C++派生的简单问题(初学者)

D_Tam 2017-04-09 07:56:05
定义一个哺乳动物类Mammal,再由此派生出狗类Dog,定义一个Dog类的对象,观察基类与派生类的构造函数和析构函数的调用顺序。

输入样例:

Input Dog Name:wangcai

输出样例:

Con.Mammal;Con.Dog:wangcai;Des.Dog:wangcai;Des.Mammal;

#include <iostream>
#include <string>
using namespace std;
class Mammal
{
public:
Mammal(string name):name(name)
{
cout<<"Con.Mammal;";
}
~Mammal()
{
cout<<"Des.Mammal;";
}
protected:
string name;
};
class Dog: public Mammal
{
public:
Dog(string name):name(name) //错误处
{
cout<<"Con.Dog:"<<name<<";";
}
~Dog()
{
cout<<"Des.Dog:"<<name<<";";
}
private:
string name;
};
int main()
{
string name;
cout<<"Input Dog Name:";
cin>>name;
Dog d(name);
return 0;
}
以上是我的代码,错误处已在代码中标出,求老司机解释下为什么错,如何改正,谢谢!!!
...全文
351 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
kakabulusi 2017-04-28
  • 打赏
  • 举报
回复
引用 7 楼 D_Tam 的回复:
[quote=引用 2 楼 kakabulusi 的回复:] 首先,变量命和函数名称不够规范, 其次,构造函数不能显示继承吧,
谢谢您的回答,麻烦您指出一下函数名称不规范的地方,新手不太懂[/quote] 父类包含一个name 变量, 子类包含一个name变量【父类有个保护类型name变量可以继承】 子类里面有个 name 函数。 那么当你调用 子类.name 请问,这个name是函数 or 子类变量 or 从父类继承的呢??
D_Tam 2017-04-26
  • 打赏
  • 举报
回复
楼上的大神们的回答对我很有帮助,在这一楼统一感谢大家
D_Tam 2017-04-26
  • 打赏
  • 举报
回复
引用 2 楼 kakabulusi 的回复:
首先,变量命和函数名称不够规范, 其次,构造函数不能显示继承吧,
谢谢您的回答,麻烦您指出一下函数名称不规范的地方,新手不太懂
tianlong654321 2017-04-12
  • 打赏
  • 举报
回复
在第一个类中增加构造函数
ggst ddup 2017-04-10
  • 打赏
  • 举报
回复
派生类的构造函数必须使用初始化列表语法调用基类的构造函数来把基类中的私有数据初始化。当派生类的构造函数没有显示的调用基类的构造函数时,编译器将自动地调用基类的默认构造函数来完成基类数据的初始化。而默认构造函数只有自己显示地定义或者在没有定义任何构造函数时编译器才会自动构造一个默认构造函数,但是你的基类中自己定义了一个非默认构造函数,所以编译器不会自动构造默认构造函数,必须自己显示的定义,而你却没有为其定义,所以,你的基类就没有默认构造函数。而在你的错误处,派生类构造函数没有显示地调用基类的构造函数,因此编译器将自动调用基类的默认构造函数,但你的基类却没有默认构造函数,因此就报错了。
lzw2016 2017-04-10
  • 打赏
  • 举报
回复
派生类中基类没出始化,好奇为啥又定义name直接继承不好吗
paschen 2017-04-10
  • 打赏
  • 举报
回复 2
Mammal类中没有默认构造函数 解决方法一,Mammal中增加一个默认构造函数 解决方法二,Dog构造函数那句改成:Dog(string name) :Mammal(name),name(name)
kakabulusi 2017-04-09
  • 打赏
  • 举报
回复
首先,变量命和函数名称不够规范, 其次,构造函数不能显示继承吧,
xskxzr 2017-04-09
  • 打赏
  • 举报
回复
基类也要初始化,由于你没有显式初始化,所以会调用基类的默认构造函数,然而你并没有为基类定义默认构造函数…… 另外,你的基类已经有name了,为啥还要在派生类里再定义一个name?

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧