我代码哪里错了#include<iostream> using namespace std; class Animal{ public : int age; Animal(int age ){ this->age=age; } }; class Dog : public Animal{ public: void showInfor(); Dog(int age ,string a){ coler=a; } private: string coler; }; void Dog::showInfor(){ cout<<age<<coler<<endl; }
时间: 2024-02-04 20:04:04 浏览: 112
使用include <iostream>时一定要加using namespace std
这段代码有两个问题:
1. 在 `Dog` 类的构造函数中没有调用 `Animal` 的构造函数进行初始化,应该在 `Dog` 的构造函数中加上对父类 `Animal` 的构造函数的调用:
```c++
Dog(int age, string a) : Animal(age) {
coler = a;
}
```
2. 在 `Dog` 类的 `showInfor` 函数中,输出字符串时应该用空格或其他分隔符将 `age` 和 `color` 分隔开,否则它们会连在一起输出。修改后代码如下:
```c++
void Dog::showInfor() {
cout << age << " " << coler << endl;
}
```
修改后的完整代码如下:
```c++
#include <iostream>
using namespace std;
class Animal{
public :
int age;
Animal(int age) {
this->age = age;
}
};
class Dog : public Animal{
public:
void showInfor();
Dog(int age, string a) : Animal(age) {
coler = a;
}
private:
string coler;
};
void Dog::showInfor() {
cout << age << " " << coler << endl;
}
int main() {
Dog dog(3, "black");
dog.showInfor();
return 0;
}
```
阅读全文