#include<iostream> using namespace std; class Person { private: string name; char gender; int age; public: Person(string name, char gender, int age) :name(name), gender(gender), age(age) {} void walk() { cout << "行走" << endl; } void eat() { cout << "吃饭" << endl; } }; class Student:virtual public Person { private: int grade; public: Student(int grade):grade(grade){} void study() { cout << "学习" << endl; } void test() { cout << "考试" << endl; } };改正代码
时间: 2024-03-24 16:36:11 浏览: 33
这段代码存在以下问题:
1. 在Student类中没有调用Person类的构造函数来初始化继承自Person类的成员变量,所以需要在Student类的构造函数中调用Person类的构造函数进行初始化。
2. 在Person类中的walk()和eat()函数没有必要定义为虚函数,因为它们不是多态函数。
3. Student类继承自Person类时,需要加上virtual关键字,避免出现菱形继承问题。
修改后的代码如下:
```c++
#include<iostream>
using namespace std;
class Person {
private:
string name;
char gender;
int age;
public:
Person(string name, char gender, int age) :name(name), gender(gender), age(age) {}
void walk() {
cout << "行走" << endl;
}
void eat() {
cout << "吃饭" << endl;
}
};
class Student:virtual public Person {
private:
int grade;
public:
Student(string name, char gender, int age, int grade):Person(name, gender, age), grade(grade) {}
void study() {
cout << "学习" << endl;
}
void test() {
cout << "考试" << endl;
}
};
```
PS:上面的代码只是针对原始代码中的错误进行修改,但是这个代码还是存在一些问题,比如没有提供获取和设置成员变量的接口等,不过这已经超出了这个问题的范畴。
相关推荐
![text/plain](https://img-home.csdnimg.cn/images/20210720083646.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)