C++ 中容器和继承的差异

C++ 中容器和继承的差异

容器: 当一个类对象在另一个类中被创建时,该对象将成为那个类的成员,这种类之间的关系被称为 容器关系拥有 关系,因为一个类包含了另一个类的对象。

在这种关系中,包含另一个类中的对象和成员的类被称为 容器类 ,而作为另一个对象一部分的对象被称为 被包含对象 ,而包含另一个对象作为其部分或属性的对象被称为 容器对象

容器语法:

// 被包含的类
    class first {
        // 类定义
    };
    // 容器类
    class second {
        // 创建first对象
        first f;
        .
        .
    }; 

程序1:

下面的程序解释了C++中容器的概念:

// C++ 程序说明容器的概念
    #include <iostream>
    using namespace std;

    class first {
    public:
        void showf()
        {
            cout << "Hello from first class\n";
        }
    };

    // 容器类
    class second {

        // 创建first类对象
        first f;

    public:
        // 定义构造函数
        second()
        {
            // 调用first类的函数
            f.showf();
        }
    };

    // 主程序
    int main()
    {
        // 创建second类对象
        second s;
    }
Hello from first class 

解释: 在上面的第二个类中,有一个first类的对象。这种继承关系被称为具有has_a关系,因为类second拥有类first的对象作为其成员。从对象f中调用了first类的函数。

继承: 它是一种类能够从另一个类中继承属性和特性的能力,这被称为 基类 。它是面向对象编程中最重要的特性之一。从另一个类中继承属性的类称为 子类派生类 ,而其属性被另一个类继承的类被称为 基类超类

语法:

class 子类名: 访问模式 基类名 {
        // 子类代码
    }; 

解释:子类名是子类的名称,访问模式是一种想要继承此子类的模式,例如publicprivate等。基类名是要从中继承子类的基类名称。

注意: 派生类不会继承私有数据成员的访问权限。但是,它确实继承完整的父对象,其中包含该类声明的任何私有成员。

程序2:

下面的程序解释了C++的继承:

// C++程序说明继承
    #include <iostream>
    using namespace std;

    // 基类
    class Shape {
    public:
        void setWidth(int w) {
            width = w;
        }
        void setHeight(int h) {
            height = h;
        }
    protected:
        int width;
        int height;
    };

    // 派生类
    class Rectangle: public Shape {
    public:
        int getArea() {
            return (width * height);
        }
    };

    // 主程序
    int main(void) {
        Rectangle Rect;
        Rect.setWidth(5);
        Rect.setHeight(7);
        // 输出对象的面积
        cout << "Total area: " << Rect.getArea() << endl;
        return 0;
    }
Total area: 35

解释: 在上面的程序中,基类是Shape,该类具有设置宽度和高度的功能。在Rectangle类中,使用public模式从基类继承属性和功能,并使用该类的getArea()函数计算面积。

// C++程序演示继承的概念
  
#include <bits/stdc++.h>
using namespace std;
  
// 基类
class Parent {
public:
    int id_p;
};
  
// 子类继承自基类(Parent)
class Child : public Parent {
public:
    int id_c;
};
  
// 主函数
int main()
{
  
    Child obj1;
  
    // 子类对象具有父类的所有数据成员和成员函数
    obj1.id_c = 7;
    obj1.id_p = 91;
  
    cout << "Child ID is "
         << obj1.id_c << endl;
  
    cout << "Parent ID is "
         << obj1.id_p << endl;
  
    return 0;
}
Child ID is 7
Parent ID is 91

解释: 在上面的程序中, 子类 是从 父类 继承而来的,因此子类也继承了父类的公共数据成员。

继承和组合的区别:

继承 组合
它使一个类从基类继承数据和函数 它使一个类将不同类的对象作为其数据成员包含其中。
派生类可以覆盖基类的功能。 容器类不能覆盖包含类的功能。
派生类可以向基类添加数据或函数。 容器类不能向包含类添加任何东西。
继承表示一种 “是一个” 关系。 组合表示一种 “有一个” 关系。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程