当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


C++ Containership和Inheritance的区别用法及代码示例


集装箱船当一个物体创建到另一个类中,那么该对象将成为该类的成员,类之间的这种类型的关系称为集装箱船或者has_a关系作为一个类包含对象另一个类的。

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

集装箱船语法

C++


// Class that is to be contained 
class first { 
  
    // Class Definition 
}; 
  
// Container class 
class second { 
  
    // Creating object of first 
    first f; 
    . 
        . 
}; 

程序1:

下面是C++中解释集装箱船概念的程序:

C++


// C++ program to illustrate the 
// concept of containership 
#include <iostream> 
using namespace std; 
  
class first { 
public: 
    void showf() 
    { 
        cout << "Hello from first class\n"; 
    } 
}; 
  
// Container class 
class second { 
  
    // Create object of the first-class 
    first f; 
  
public: 
    // Define Constructor 
    second() 
    { 
        // Call function of first-class 
        f.showf(); 
    } 
}; 
  
// Driver Code 
int main() 
{ 
    // Create object of second class 
    second s; 
} 
输出:
Hello from first class

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

继承它是一个类从另一个类派生属性和特征的能力,称为基类。这是最重要的特征之一面向对象编程。从另一个类继承属性的类称为子类或者派生类。其属性被继承的类sub-class叫做基类或者超级级.

用法:

C++


class subclass_name : access_mode base_class_name { 
    // body of subclass 
}; 

说明:subclass_name是子类的名称,access_mode是要继承该子类的模式。例如,public、private 等。base_class_name 是要从中继承子类的基类的名称。

注意:派生类不继承使用权到私有数据成员。但是,它确实继承了一个完整的父对象,其中包含该类声明的任何私有成员。

程序2:

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

C++


// C++ program to demonstrate the 
// concept of inheritance 
  
#include <bits/stdc++.h> 
using namespace std; 
  
// Base class 
class Parent { 
public: 
    int id_p; 
}; 
  
// Sub class inheriting from the 
// Base Class(Parent) 
class Child : public Parent { 
public: 
    int id_c; 
}; 
  
// Driver Code 
int main() 
{ 
  
    Child obj1; 
  
    // An object of class child has 
    // all data members and member 
    // functions of class parent 
    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

说明:在上面的程序中,子类是从父类公开继承的,因此父类的公共数据成员也会被子类继承。

继承与集装箱船的区别

继承 集装箱船
它使类能够从基类继承数据和函数 它使一个类能够包含不同类的对象作为其数据成员。
派生类可以覆盖基类的函数。 容器类不能覆盖被包含类的函数。
派生类可以向基类添加数据或函数。 容器类不能向包含的类添加任何内容。
继承代表着一个“is-a”关系。 集装箱船代表了“has-a”关系。


相关用法


注:本文由纯净天空筛选整理自aman362大神的英文原创作品 Difference between Containership and Inheritance in C++。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。