程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> c++繼承總結

c++繼承總結

編輯:C++入門知識

c++繼承總結


繼承
1)繼承是面向對象程序設計實現軟件重用的重要方法。程序員可以在已有基類的基礎上定義新的派生類。
2) 單繼承的派生類只有一個基類。多繼承的派生類有多個基類。
3) 派生類對基類成員的訪問由繼承方式和成員性質決定。
4) 創建派生類對象時,先調用基類構造函數初始化派生類中的基類成員。調用析構函數的次序和調用構造函數的次序相反。
5)C++提供虛繼承機制,防止類繼承關系中成員訪問的二義性。
6) 多繼承提供了軟件重用的強大功能,也增加了程序的復雜性。

派生類類成員訪問級別
1、需要被外界訪問的成員直接設置為public
2、只能在當前類中訪問的成員設置為private
3、只能在當前類和子類中訪問的成員設置為protected,protected成員的訪問權限介於public和private之間。

//類的繼承方式對子類對外訪問屬性影響

#include 
#include 

using namespace std;

class A
{
private:
    int a;
protected:
    int b;
public:
    int c;

    A()
    {
        a = 0;
        b = 0;
        c = 0;
    }

    void set(int a, int b, int c)
    {
        this->a = a;
        this->b = b;
        this->c = c;
    }
};

class B : public A
{
public:
    void print()
    {
        //cout<

類型兼容性原則
子類對象可以當作父類對象使用
子類對象可以直接賦值給父類對象
子類對象可以直接初始化父類對象
父類指針可以直接指向子類對象
父類引用可以直接引用子類對象

#include 
#include 

using namespace std;

//子類就是特殊的父類
class Parent03
{
protected:
    const char* name;
public:
    Parent03()
    {
        name = Parent03;
    }

    void print()
    {
        cout<name = Child2;
        this->i = i;
    }
};

int main()
{
    Child03 child03(1000);
    //分別定義父類對象 父類指針 父類引用 child
    Parent03 parent = child03;
    Parent03* pp = &child03;
    Parent03& rp = child03;

    parent.print();
    pp->print();
    rp.print();
    system(pause);
    return 0;
}

繼承中構造和析構
在子類對象構造時,需要調用父類構造函數對其繼承得來的成員進行初始化
在子類對象析構時,需要調用父類析構函數對其繼承得來的成員進行清理

#include 
#include 
using namespace std;

class Parent04
{
public:
    Parent04(const char* s)
    {
        cout<

1、子類對象在創建時會首先調用父類的構造函數
2、父類構造函數執行結束後,執行子類的構造函數
3、當父類的構造函數有參數時,需要在子類的初始化列表中顯示調用
4、析構函數調用的先後順序與構造函數相反

繼承中的同名成員變量
1、當子類成員變量與父類成員變量同名時
2、子類依然從父類繼承同名成員
3、在子類中通過作用域分辨符::進行同名成員區分(在派生類中使用基類的同名成員,顯式地使用類名限定符)
4、同名成員存儲在內存中的不同位置

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved