c++的oop之class和struct

c++中的面向對象

構造函數

與C#一樣,可以擁有多個構造函數,但python只有一個構造函數

默認的無參構造函數,可以這樣寫 classname() = default;

構造函數時初始化變量,建議這樣寫。對於const或自定義類型必須這樣寫,而對於內置類型幾乎是一樣的。

MyClass::MyClass(string name,int id):
	name(name),
	id_(id)
{
	Player::init();
}

C++中類的構造函數,成員變量是在初始化列表初始化還是在函數體中進行賦值? - 知乎 (zhihu.com)

函數的聲明

成員函數的聲明可以寫在類的外面,只需要加上classname::xxx,而不像C#必須寫在類的內部。

一般都是在h文件中聲明,cpp中實現

類的生命週期

創建

拷貝

銷燬 ~classname()

friend友元

friend class xxx ,在一個class的內部再定義一個class,或者單純的定義單個class

friend友元,可以讓外部訪問private的字段和函數

關於class和stuct

在C#中這兩者有差別挺大,主要是:C#中class是引用類型,而stuct是值類型,到c++中,只有訪問類型的區別:stuct的屬性全是public 而class可以有private,其它並無區別,從c++ primer看到。

經過實踐,c++中如果實例化一個class,那麼他仍然不是引用類型,只有指針是引用類型。


FAQ

Q:爲什麼很多代碼中都是使用struct而不是class?

A:根據實際用途來決定

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