C++中struct 和 class的區別

而遠之發表於2014-04-04

首先,C++中類的定義,從狹義上理解,就是我們使用的class型別。從廣義上,類就是定義了一個新的型別和新的作用域,它具有成員函式和成員資料。

而對廣義類定義的實現分為兩種,一種是使用struct實現,一種是使用class實現。所以,有關類的繼承,多型,動態繫結等知識點,C++中的struct 和class完全相同。只是在一些細節上略有區別。

兩者的區別:

1.預設的訪問標號不同:如果類中某成員的定義之前沒有出現任何訪問標號,則class定義的類中,成員預設為private成員。struct定義的類中,預設為public成員。
2.預設繼承許可權不同:如果不明確指定,來自class的繼承按照private繼承處理,來自struct的繼承按照public繼承處理。
3.struct和class物件可以互相繼承 。繼承許可權根據派生類的許可權語法來定義。

class Base {
	public:
		void basemem();
	private:
		int i;
};

struct Derived : public Base(){
	public:
		int use_base() { return i; }
};

相關文章