📅  最后修改于: 2023-12-03 14:39:54.224000             🧑  作者: Mango
继承是 C++ 中面向对象编程的核心概念之一,它可以让我们在已有的类的基础上创建出新的类,并且让新的类能够继承已有类的属性和方法。在使用继承时,我们需要了解一些问题,以免出现错误或者误解。
在使用继承时,我们需要注意以下问题:
下面是一个简单的示例代码,用于说明使用继承时需要注意的问题:
#include <iostream>
using namespace std;
class Animal {
public:
Animal() {
cout << "Animal Constructor" << endl;
}
~Animal() {
cout << "Animal Destructor" << endl;
}
void eat() {
cout << "Animal Eat" << endl;
}
protected:
void run() {
cout << "Animal Run" << endl;
}
};
class Cat : public Animal {
public:
Cat() {
cout << "Cat Constructor" << endl;
}
~Cat() {
cout << "Cat Destructor" << endl;
}
void catchMouse() {
cout << "Cat Catch Mouse" << endl;
}
};
int main() {
Cat cat;
cat.eat();
cat.catchMouse();
cat.run();
return 0;
}
运行上述代码,输出结果如下:
Animal Constructor
Cat Constructor
Animal Eat
Cat Catch Mouse
Animal Run
Cat Destructor
Animal Destructor
从输出结果中,我们可以看到:
Cat
在创建时,会先调用父类的构造函数,输出 Animal Constructor
。Cat
在销毁时,会先调用父类的析构函数,输出 Animal Destructor
。Cat
可以使用父类中的公有成员 eat()
和受保护成员 run()
。Animal
中的构造函数和析构函数不会被继承,因此在子类的构造函数和析构函数中需要分别调用父类的构造函数和析构函数。使用继承时,我们需要注意子类对象在创建和销毁时会自动调用父类的构造函数和析构函数,并且子类可以使用父类中的公有成员和受保护成员。同时,父类中的构造函数和析构函数不会被继承,需要在子类的构造函数和析构函数中分别调用父类的构造函数和析构函数。