當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


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++。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。