關於struct和class的知識

2021-08-21 22:39:29 字數 669 閱讀 1624

在c++中,struct可以同class一樣擁有自己的成員,只不過struct成員的預設訪問的是public範圍。如果在struct中定義了建構函式,則預設建構函式(無參建構函式)必須顯式定義才能使用(隱式構造方法是編譯器自動給出的,顯式構造方法是程式設計師自己定義的)。否則,在建立此結構體的例項的時候,會出現編譯錯誤

struct test;

test* test=new test;//結構體使用預設建構函式,編譯通過

struct test1

int _a;

}struct test2;

test2* test2=new test2;//結構體test1沒有顯式定義無參建構函式,呼叫失敗,編譯無法通過

test1中沒有顯式定義的無參建構函式,而生成例項的方法卻呼叫的是無參構造。

解決方法有:

為test1定義預設建構函式

將test1資料成員宣告為指標型別(此時test2結構體中儲存的是test1的4位元組位址,不需要呼叫test1的建構函式)。

//提供預設建構函式

struct test1

test1(int a):_a(a){}

int _a;

};//資料成員宣告為指標

struct test2;

struct和class的關係

一 預設繼承許可權。如果不明確指定,來自class的繼承按照private繼承處理,來自struct的繼承按照public繼承處理 二 成員的預設訪問許可權。class的成員預設是private許可權,struct預設是public許可權。除了這兩點,class和struct基本就是乙個東西。語法上...

struct和class的區別

1.值型別與引用型別 結構是值型別 值型別在堆疊上分配位址,所有的基型別都是結構型別,例如 int 對應system.int32 結構,string 對應 system.string 結構 通過使用結構可以建立更多的值型別 類是引用型別 引用型別在堆上分配位址 堆疊的執行效率要比堆的執行效率高,可是...

class和struct的區別

從語法上,在c 中 只討論c 中 class和struct做型別定義時只有兩點區別 一 預設繼承許可權。如果不明確指定,來自class的繼承按照private繼承處理,來自struct的繼承按照public繼承處理 二 成員的預設訪問許可權。class的成員預設是private許可權,struct預...