1. 程式人生 > >C語言中的結構體與C++中的類異同

C語言中的結構體與C++中的類異同

從C語言到C++,是程式設計思想的進步,技術發展的結果吧,所以C++基本上是相容C的語法的,C++的很多東西也是從C中繼承過來的,然後再發揚,C語言的結構體便是C++中類的雛形。        

簡單的一句話,C語言中的結構體是C++中類的祖先,也可以說C++中的類是C語言中結構體的超集,當然啦,祖先肯定是還沒有完全進化的,所以C語言中的結構體的功能相對於C++中的類的功能也相對簡單許多。

(1)下面舉一個簡單的例子,以Point類為例

C語言的結構體可以這樣使用:

#include<iostream>

using namespace std;

struct Point

{

         intx;

         inty;

};

int main()

{

         structPoint p;

         p.x=9;

         p.y=0;

         cout<<p.x<<endl<<p.y<<endl;

         return0;

}


(2)下面是C++中Point類的程式:

#include<iostream>

using namespace std;

//struct Point

class Point

{

public:

         intx;

         inty;

};

int main()

{

         classPoint p;

         p.x=9;

         p.y=0;

         cout<<p.x<<endl<<p.y<<endl;

         return0;

}


從上面可以看出,只是在C結構體的基礎上稍稍加一點修改,便可以將C結構體變成C++的類;

(3)相同之處:

C語言的結構體和C++的類在C++程式中是可以通用的,類的內部可以包含函式,其實結構體內部也是可以包含函式的,

#include<iostream>

using namespace std;

struct Point

//class Point

{

         intx;

         inty;

         voidDisplay()

         {

                  cout<<x<<endl<<y<<endl;

         }

};

int main()

{

         structPoint p;

         p.x=9;

         p.y=0;

         cout<<p.x<<endl<<p.y<<endl;

         p.Display();      //呼叫結構體中的函式

         return0;

}

這樣使用結構體也是可以的。

(4)不同之處:

可以看出,C語言結構體資料成員未加許可權修飾符,預設為public型別,可以直接輸入輸出,直接對結構體物件的資料成員進行操作。


如上圖,而C++中的類成員預設屬性為private型別,是不能直接進行操作的。

(4)C語言是面向過程的程式語言,C++是面向物件的程式語言,面向過程和麵向物件是一種思想,不是完完全全可以區分開的,它沒有一個明確的界限,它是程式語言發展的一個過程,就如同C語言的結構體便是C++中類發展的雛形。

當然了,C++類的用法遠遠不止這些,這裡只是簡述一下結構體和類的區別,對於結構體和類的用法這裡不詳述,想要了解的朋友可以去學習C語言和C++面向物件程式設計,