C++继承构造函数
C++ Inheritance Constructor
我正在尝试创建一个哺乳动物对象来调用动物类中的speak函数。我能知道我弄错了哪一部分吗?我是新继承人。
#include <iostream>
#include <string>
using namespace std ;
enum COLOR { Green, Blue, White, Black, Brown } ;
class Animal
{
public :
Animal() : _name("unknown")
{
cout << "constructing Animal object " << _name << endl ;
}
Animal (string n , COLOR c)
{
cout << "Animal name: " << n << " color: " << c << endl;
};
~Animal()
{
cout << "destructing Animal object " << _name << endl ;
}
void speak() const
{
cout << "Animal speaks " << endl ;
}
void move() const { }
private :
string _name;
COLOR _color ;
};
class Mammal : public Animal
{
public:
Mammal (string n, COLOR c) : Animal (n, c)
{
cout << "Animal name: " << n << " color: " << c << endl;
}
~Mammal() {}
void eat() const
{
cout << "Mammal eat " << endl ;
}
};
int main()
{
Mammal m.speak();
Animal b("lion", Green);
cout << "Program exiting …. " << endl ;
return 0;
}
我不明白为什么我不能创建对象m来调用动物中的说话功能。
您必须拆分此语句
Mammal m.speak();
在两个语句中
Mammal m;
m.speak();
您必须为Mammal类定义默认构造函数。
例如
Mammal() = default;
或
Mammal() {}
如果有任何用户定义的构造函数,编译器不会为您声明默认构造函数。
Mammal() { }
相关文章:
- 具有相同名称的类的构造函数继承
- 多复制构造函数继承中的惊人行为
- CRTP 和复制/移动赋值/构造函数继承
- 复制构造函数继承动态分配的数组
- 无法从 c++ 中的构造函数继承
- 在构造函数继承中使用默认构造函数
- 构造函数继承和直接成员初始化
- C++ - 使用私有参数的构造函数继承
- 通过可变参数模板进行C++11构造函数继承
- C++11构造函数继承和不带参数的构造函数
- C++11 - 构造函数继承
- C++构造函数继承
- 使用 C++11 编译器的构造函数继承正在生成错误
- 选择性构造函数继承"Ambiguous resolution"错误
- 什么是构造函数继承
- C++对象中的构造函数继承与方法继承
- C++构造函数继承没有匹配的函数
- C++构造函数继承(从派生类调用构造函数)
- 模板构造函数继承的标准符合语法是什么
- C++构造函数继承错误