c結構體、c++結構體和c++類的區別以及錯誤糾正

原文地址:https://blog.csdn.net/mercy_ps/article/details/82918677

C和C++結構體的區別

C語言中的結構體不能爲空。
C語言中的結構體只是一個複雜的數據類型,只能定義成員變量,不能定義成員函數,但是可以定義函數指針;C++可以定義成員函數和成員變量。
C++的結構體和類體現了數據結構和算法的結合。
C語言中定義結構體變量時,struct不可以省略:C++中定義結構體變量時,struct可以省略。
struct Test
{
    int num;
    char ch;
};
 
int main()
{
    //C語言中
    struct Test t1;
    //C++中
    Test t2;
 
    return 0;
}
c++中結構體和類的區別

對於成員訪問權限以及繼承方式,class中默認private,struct中默認是public。
如果沒有多態和繼承,在C++中,struct和class存取效率完全相同。
class可以用於表示模板類型,struct不行。
//用模板的時候可以寫
template <class Type>
template <typemname Type>
//不能寫
template<struct Type>
注意:

關於有些文獻中描述如下,並不適用於C++!!!

類型:struct是值類型,class是引用類型。值類型存儲在棧中,引用類型存儲在堆中。

效率:棧的執行效率比堆的執行效率高,但是棧的資源有限,不適合處理邏輯複雜的大對象。所以struct常用來處理存儲數據的輕量級對象,class常用來表示數據量大,邏輯複雜的大對象或者表現抽象和多級別的對象層次(多重繼承)。

關係:struct只能添加帶參的構造函數,不能使用abstract和protected等修飾符,不能初始化實例字段。

關於值類型和引用類型的描述適用於C#語法。

關於C#中值類型和引用類型的一篇文獻:《值類型和引用類型深入理解》

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章