c++ 继承 举例说明
时间: 2023-05-11 17:01:52 浏览: 101
当一个类从另一个类派生出来时,我们称之为继承。在 C++ 中,我们使用关键字 "class" 来定义一个类,使用关键字 "public" 来指定继承方式。下面是一个简单的继承示例:
```
class Animal {
public:
void eat() {
cout << "Animal is eating" << endl;
}
};
class Dog : public Animal {
public:
void bark() {
cout << "Dog is barking" << endl;
}
};
int main() {
Dog myDog;
myDog.eat(); // 继承自 Animal 类
myDog.bark();
return 0;
}
```
在上面的示例中,我们定义了一个 Animal 类,它有一个 eat() 方法。然后我们定义了一个 Dog 类,它继承自 Animal 类,并添加了一个 bark() 方法。在 main() 函数中,我们创建了一个 Dog 对象,并调用了它的 eat() 和 bark() 方法。由于 Dog 类继承自 Animal 类,因此它可以使用 Animal 类中定义的 eat() 方法。
相关问题
请举例解释c++继承
好的,假设有一个基类Animal,它有三个成员变量和两个成员函数:
```c++
class Animal {
private:
int age;
string name;
string species;
public:
void eat() {
cout << "Animal is eating." << endl;
}
void sleep() {
cout << "Animal is sleeping." << endl;
}
};
```
现在我们要创建一个派生类Dog,它继承了基类Animal的所有成员变量和成员函数,并且还有自己的一些成员变量和成员函数:
```c++
class Dog : public Animal {
private:
string breed;
public:
void bark() {
cout << "Dog is barking." << endl;
}
};
```
这个例子中,我们使用public关键字将Dog类声明为公有继承Animal类的派生类。这意味着Dog类可以访问Animal类的公有成员函数和变量。
现在我们可以创建一个Dog对象,并调用它继承的成员函数和自己的成员函数:
```c++
int main() {
Dog mydog;
mydog.eat(); // 调用继承自Animal类的eat()函数
mydog.bark(); // 调用Dog类自己的bark()函数
return 0;
}
```
这个程序将输出:
```
Animal is eating.
Dog is barking.
```
这说明Dog类成功地继承了Animal类的成员函数,并添加了自己的成员函数。
举例说明什么是继承
继承是面向对象编程中的一种重要概念,它允许我们创建一个新的类,该类继承了一个或多个已有类的属性和方法。通过继承,我们可以避免重复编写代码,提高代码复用性,同时也能够更好地组织代码,使其更易于维护和扩展。
举个例子,我们可以定义一个Person类,该类包含了一个人的姓名和年龄信息:
```c++
class Person {
private:
string name;
int age;
public:
Person(string name, int age) : name(name), age(age) {}
void sayHello() {
cout << "Hello, my name is " << name << ", I'm " << age << " years old." << endl;
}
};
```
现在,我们想要创建一个新的类,该类继承自Person类,并添加一个新的成员变量job,表示这个人的职业。我们可以通过以下方式实现:
```c++
class Student : public Person {
private:
string job;
public:
Student(string name, int age, string job) : Person(name, age), job(job) {}
void sayHello() {
cout << "Hello, my name is " << name << ", I'm " << age << " years old, and my job is " << job << "." << endl;
}
};
int main() {
Student s("Tom", 18, "student");
s.sayHello();
return 0;
}
```
在这个例子中,我们定义了一个名为Student的类,它继承自Person类,并新增了一个成员变量job,同时重写了sayHello方法。在main函数中,我们创建了一个Student对象s,并调用了它的sayHello方法。
由于Student类继承自Person类,因此它可以访问Person类中的所有成员变量和方法。同时,由于Student类重新定义了sayHello方法,因此在调用Student类的sayHello方法时,会调用该方法的重载版本,而不是Person类的sayHello方法。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.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)
![cpp](https://img-home.csdnimg.cn/images/20210720083646.png)