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++面向物件程式設計,