c語言與c 區別

2021-07-04 20:12:39 字數 2109 閱讀 9907

c語言與c++區別:

所以c與c++的最大區別在於它們的用於解決問題的思想方法不一樣。之所以說c++比c更先進,是因為「 設計這個概念已經被融入到c++之中 」。

對語言本身而言,c是c++的子集。《effective c++》上說道,c++由四個部分組成: c、object-oriented c++、template c++、 stl,即c語言、物件導向oop、泛型程式設計(模板)、stl。

物件導向的三個基本特徵是:封裝、繼承、多型

封裝,也就是把客觀事物封裝成抽象的類,並且類可以把自己的資料和方法只讓可信的類或者物件操作,對不可信的進行資訊隱藏。

類的成員可以分為共有成員,私有成員,保護成員。在不考慮繼承的情況下,保護成員與私有成員一樣,都只能在類內部被訪問;而存在繼承的情況下,基類的保護成員根據繼承的方式,相應地成為了子類的保護成員或私有成員,而基類的私有成員仍為基類的私有成員,子類無法訪問基類的私有成員。

物件導向程式設計 (oop) 語言的乙個主要功能就是「繼承」。繼承是指這樣一種能力:它可以使用現有類的所有功能,並在無需重新編寫原來的類的情況下對這些功能進行擴充套件。

通過繼承建立的新類稱為「子類」或「派生類」。

被繼承的類稱為「基類」、「父類」或「超類」。

繼承的過程,就是從一般到特殊的過程。

在某些 oop 語言中,乙個子類可以繼承多個基類。但是一般情況下,乙個子類只能有乙個基類,要實現多重繼承,可以通過多級繼承來實現。

對基類的繼承方式有三種:共有繼承、私有繼承、保護繼承。

(1)共有繼承:基類的共有成員和保護成員在派生類中保持原有訪問屬性,其私有成員仍為基類私有;

(2)私有繼承:基類的共有成員和保護成員在派生類中成了私有成員,其私有成員仍為基類私有;

(3)保護繼承:基類的共有成員和保護成員在派生類中成了保護成員,其私有成員仍為基類私有。

ps:「其私有成員仍為基類私有」的意思是,基類的私有成員並沒有成為派生類的私有成員,它仍然是基類的私有成員,只有基類的成員函式才能訪問它,而不能被派生類的成員函式訪問

在考慮使用繼承時,有一點需要注意,那就是兩個類之間的關係應該是「屬於」關係。例如,employee 是乙個人,manager 也是乙個人,因此這兩個類都可以繼承 person 類。但是 leg 類卻不能繼承 person 類,因為腿並不是乙個人。

多型性可以簡單地概括為「乙個介面,多種方法」,程式在執行時才決定呼叫的函式,它是物件導向程式設計領域的核心概念。

封裝可以隱藏實現細節,使得**模組化;繼承可以擴充套件已存在的**模組(類);它們的目的都是為了——**重用。而多型則是為了實現介面重用。在c++中, 多型性體現在具有不同功能的函式可以使用同乙個函式名,這樣就可以通過乙個函式名呼叫不同的函式內容。

實現多型,有二種方式,覆蓋,過載。

關於虛函式,最常見的用法就是宣告基類的指標,利用該指標指向任意乙個子類物件,呼叫相應的虛函式,可以根據指向的子類的不同而實現不同的方法。如果沒有使用虛函式的話,即沒有利用c++多型性,則利用基類指標呼叫相應的函式的時候,將總被限制在基類函式本身,而無法呼叫到子類中被重寫過的函式。

比如下面的例子:

#include 

using

namespace

std;

class person

執行結果為:

person sleep

student get up

student sleep

student get up

同樣,如果將乙個子類的指標指向乙個基類的物件,也可以呼叫相應的虛函式。只是沒有使用虛函式,則呼叫子類的函式。如上面定義的類,若main函式為:

person we;

student *ptr;

ptr = (student *)&we;

ptr->sleep();

ptr->get_up();

則結果為:

student sleep

person get up

c 語言與C語言的區別

c 之類的語言是物件導向的。使用這樣的語言程式設計被稱為物件導向程式設計 object oriented programming,oop。它可以讓計算機程式設計師將乙個物件導向的設計實現稱為乙個可工作的軟體系統 c之類的語言是過程性 procedural 所以程式設計總是面向動作的。在c語言中,程式...

c語言與C 的區別

c語言與c 的區別有很多 1,全新的程式程式思維,c語言是面向過程的,而c 是物件導向的。2,c語言有標準的函式庫,它們鬆散的,只是把功能相同的函式放在乙個標頭檔案中 而c 對於大多數的函式都是有整合的很緊密,特別是c語言中沒有的c 中的api是對window系統的大多數api有機的組合,是乙個集體...

C 與C語言的區別

c 語言對c語言的擴充 1 資料的輸入輸出 2 變數的初始化及常量 3 引用及函式間引數的引用傳遞 4 幾種特殊形式的函式 5 命名空間 6 動態記憶體分配 1 資料的輸入輸出 c語言的輸入與輸出 輸入 輸出函式,例如scanf,printf等 標頭檔案 include c 語言的輸入與輸出 將提供...