C++三种继承方式实例详解_c++继承的三种方式及其区别(c++3种继承方式实例详解)

半世蒼涼 42 0

优惠价:¥

原价:¥

不断提升技能,才能在职场中立于不败之地!全网最全C++题库,助您成为编程领域的佼佼者。
今天给各位分享C++三种继承方式实例详解的知识,其中也会对c++继承的三种方式及其区别进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

今天给各位分享C++三种继承方式实例详解的知识,其中也会对c++继承的三种方式及其区别进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

C++中的三种继承方式分别是公有继承、私有继承和保护继承。

这三种继承方式在面向对象编程中具有不同的作用和效果,下面将通过实例详细介绍它们的用法和区别。

C++三种继承方式实例详解_c++继承的三种方式及其区别(c++3种继承方式实例详解)-第1张图片-东莞河马信息技术
(图片来源网络,侵删)

一、公有继承公有继承是指子类对象访问父类公有成员的方式。

在公有继承中,子类对象可以直接访问父类的公有成员,并且子类对象对父类的公有成员具有修改权限。

C++三种继承方式实例详解_c++继承的三种方式及其区别(c++3种继承方式实例详解)-第2张图片-东莞河马信息技术
(图片来源网络,侵删)

这种继承方式使得子类对象可以访问父类的公有属性和方法,同时也能够继承父类的公有属性和方法。

下面是一个公有继承的示例代码C++三种继承方式实例详解:```c++ class Base { public:int a;void print() {std::cout << "Base::print() called." << std::endl;} };class Derived : public Base { public:void foo() {std::cout << "Derived::foo() called." << std::endl;// 访问父类的公有成员 astd::cout << "a = " << Base::a << std::endl;} };int main() {Derived d;d.foo(); // 输出 "Derived::foo() called." 和 "a = 0"d.Base::a = 1; // 修改父类的公有成员 ad.foo(); // 输出 "Derived::foo() called." 和 "a = 1"return 0; } ``` 在上面的代码中,子类 `Derived` 通过 `public` 关键字继承了父类 `Base` 的公有成员 `a` 和 `print()` 方法。

在子类中可以通过 `Derived::a` 访问父类的公有成员 `a`,并且可以对它进行修改。

需要注意的是,在公有继承中,子类对象对父类的公有成员具有修改权限,因此需要谨慎使用。

二、私有继承私有继承是指子类对象访问父类私有成员的方式。

在私有继承中,子类对象不能直接访问父类的私有成员,只有通过父类提供的公共接口才能访问。

这种继承方式可以保护父类的私有成员,防止子类对象随意修改它们。

下面是一个私有继承的示例代码:```c++ class Base { private:int b;void print() {std::cout << "Base::print() called." << std::endl;} };class Derived : private Base { public:void foo() {std::cout << "Derived::foo() called." << std::endl;// 无法访问父类的私有成员 b,报错信息为“无法访问 private 成员”// int Derived::b = Base::b; // 无法编译通过,因为访问了私有成员 b 的副本并将其更改为了新的值,而不是直接更改原始值。

} }; ``` 在上面的代码中,子类 `Derived` 通过 `private` 关键字继承了父类 `Base` 的私有成员 `b` 和 `print()` 方法。

在子类中无法直接访问父类的私有成员 `b`,如果尝试访问会报错信息为“无法访问 private 成员”。

需要注意的是,在私有继承中,子类对象不能直接访问父类的私有成员,因此需要谨慎使用。

同时,由于无法直接访问父类的私有成员,因此也无法通过子类对象来修改它们。

三、保护继承(C++11新增特性)保护继承是指子类对象只能访问父类的保护成员的方式。

在保护继承中,子类对象只能通过父类提供的公共接口来访问保护成员,无法直接访问它们。

这种继承方式可以保护父类的保护成员,防止子类对象对它们进行修改或直接访问。

在 C++11 中新增了保护继承的概念,其用法与私有继承类似。

下面是一个保护继承的示例代码:```c++ class Base { protected:int c; // 保护成员 c 的声明方式与普通成员变量相同,但访问权限为 protected。

因此它只能被派生类直接访问或修改。

void print() { // protected 成员的声明方式与普通成员函数相同。

因此它可以在派生类中使用。

但是它不能被派生类的成员函数直接调用。

需要使用 Base 类提供的接口进行调用。

例如:Base* p = new Derived(); p->Base::print(); 或者 Derived* p = new Derived(); p->print();。

这是 protected 成员的主要特点之一。

由于 protected 成员的声明方式与普通成员函数相同,因此C++三种继承方式实例详解我们可以认为 protected 是对 public 和 private 的一个折衷方案。

它可以允许派生类访问并修改。

C++三种继承方式实例详解的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于c++继承的三种方式及其区别、C++三种继承方式实例详解的信息别忘了在本站进行查找喔。

标签: 类对象