C++类的继承覆盖和隐藏区别
导读:在C++中,类的继承、覆盖和隐藏是面向对象编程的重要概念 继承(Inheritance): 继承是一种创建新类的方式,新类继承了现有类的属性和方法。这样,新类可以重用现有类的代码,并可以对其进行扩展或修改。继承的主要目的是实现代码的重用和...
在C++中,类的继承、覆盖和隐藏是面向对象编程的重要概念
- 继承(Inheritance): 继承是一种创建新类的方式,新类继承了现有类的属性和方法。这样,新类可以重用现有类的代码,并可以对其进行扩展或修改。继承的主要目的是实现代码的重用和实现多态性。在C++中,使用冒号(:)和访问修饰符(public, protected, private)来表示继承关系。例如:
class Base {
public:
void foo() {
// ...
}
}
;
class Derived : public Base {
// ...
}
;
- 覆盖(Overriding): 覆盖是指子类重新定义了父类中的虚函数。当子类对象调用该虚函数时,将执行子类中的实现,而不是父类中的实现。覆盖的主要目的是实现多态性。在C++中,使用virtual关键字来表示虚函数,并在子类中重新定义该函数。例如:
class Base {
public:
virtual void foo() {
// ...
}
}
;
class Derived : public Base {
public:
void foo() override {
// ...
}
}
;
- 隐藏(Hiding): 隐藏是指子类中的函数与父类中的非虚函数同名,导致子类对象在调用该函数时只能访问子类中的实现,而不能访问父类中的实现。隐藏并不是多态的一种形式,因为它不能通过基类指针或引用调用子类中的实现。在C++中,如果子类中的函数与父类中的非虚函数同名,子类将隐藏父类中的函数。例如:
class Base {
public:
void foo() {
// ...
}
}
;
class Derived : public Base {
public:
void foo() {
// ...
}
}
;
总结一下,继承是一种创建新类的方式,允许子类重用父类的代码;覆盖是指子类重新定义了父类中的虚函数,实现多态性;隐藏是指子类中的函数与父类中的非虚函数同名,导致子类对象只能访问子类中的实现。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: C++类的继承覆盖和隐藏区别
本文地址: https://pptw.com/jishu/705391.html