问一个很菜的问题

IT保安 2014-06-06 04:20:51
#include <iostream>
#include <string>
using namespace std;

class Animal
{
private:
string name;
int age;
int weight;
public:
void show()
{
cout << name << ":" << age << ":" << weight << endl;
}
Animal(const string &na = 0,int a = 0,double w = 0.0)
:name(na),age(a),weight(w){}

};

class Dog:public Animal
{
private:
string name1;
int age1;
public:
Dog(const string &na1,int a1)
:name1(na1),age1(a1){}

};


int main()
{
Animal cat("咪咪",10);
Dog dog1("旺财",15);
return 0;
}

我是初学者,写一个简单的派生类,编译没问题,但是运行就出错。但是将main()函数中什么都不写,就保留return 0,那么运行也不会出错了,我搞不懂这是为什么啊!
...全文
207 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
肖邦之离歌 2014-06-06
  • 打赏
  • 举报
回复
引用 5 楼 L812234929 的回复:
[quote=引用 1 楼 u011569364 的回复:] Animal 没有默认构造函数,Dog的构造函数里没有明确调用Animai的哪个构造函数,所以调用的是默认构造函数,但是你有没有默认构造函数,导致的出错。你给Animal添加一个共有的默认构造函数就可以了。
Animal 已经显式的提供了构造函数了,也就没有了默认构造函数,所以Dog dog1("旺财",15);依然调用的是Animal(const string &na = 0,int a = 0,double w = 0.0)这个构造函数[/quote]好像是的,佩服佩服
狼异族 2014-06-06
  • 打赏
  • 举报
回复
引用 1 楼 u011569364 的回复:
Animal 没有默认构造函数,Dog的构造函数里没有明确调用Animai的哪个构造函数,所以调用的是默认构造函数,但是你有没有默认构造函数,导致的出错。你给Animal添加一个共有的默认构造函数就可以了。
Animal 已经显式的提供了构造函数了,也就没有了默认构造函数,所以Dog dog1("旺财",15);依然调用的是Animal(const string &na = 0,int a = 0,double w = 0.0)这个构造函数
狼异族 2014-06-06
  • 打赏
  • 举报
回复
你的程序出错在于 在调用Animal(const string &na = 0,int a = 0,double w = 0.0)这个函数的时候会执行const string &na = 0,将0赋给一个string,属于非法操作
Herowinter 2014-06-06
  • 打赏
  • 举报
回复
同意楼上的,这一段代码改成这样可以
class Animal
{
private:
    string name;
    int age;
    int weight;
public:
    void show()
    {
        cout << name << ":" << age << ":" << weight << endl;
    }
    Animal():name(""),age(0),weight(0){}
    
    Animal(const string &na,int a = 0,double w = 0.0)
        :name(na),age(a),weight(w){}
     
};
肖邦之离歌 2014-06-06
  • 打赏
  • 举报
回复
哦,还有一个问题,你的Animal的构造函数不能都有缺省参数,第一个name不能有缺省参数,这样的话,如果你写成Animal();编译器也不能区分你到底要调用哪一个
肖邦之离歌 2014-06-06
  • 打赏
  • 举报
回复
Animal 没有默认构造函数,Dog的构造函数里没有明确调用Animai的哪个构造函数,所以调用的是默认构造函数,但是你有没有默认构造函数,导致的出错。你给Animal添加一个共有的默认构造函数就可以了。

33,311

社区成员

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

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