作者x246libra (宸火)
看板C_and_CPP
標題[問題] C++ class type 及 物件生成疑問
時間Mon Apr 9 13:36:24 2018
(一)
在C# class 屬於reference type
原本以為C++ 也是reference type 但查了網路
似乎說 C++預設 class是value type
但也可以當reference type使用
https://msdn.microsoft.com/en-us/library/hh438479.aspx
想問 c++ 的class是
屬於 reference type 還是 value type?
(二)
現在接觸到一點C++ 有點搞不懂
C#和C++的物件生成方式
class classA
{
public:
int num;
}
剛開始學物件導向是C#
使用物件的宣告是
classA a = new classA
a.num=1
a是屬於 變數 還是 指標?
但C#應該不能操作指標
因為跟C++一樣有用到new
我搞不懂C++和C# 物件使用的分別
有人可以跟我解釋一下嗎?
C++物件生成的方式有兩種?
1.直接宣告 物件變數
classA a
a.num=1
跟C#的使用方式很像
但是不用new?
2.宣告物件指標 再用new給予記憶體位置
classA *a = new classA
a.num->1
C++這兩種方式 有什麼不同?
哪一種方式 比較可以對應到C#?
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 61.220.35.157
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1523252188.A.B93.html
→ rbufghj9713: 一個在stack 04/09 13:59
→ rbufghj9713: 一個在Heap 04/09 13:59
推 jerryh001: 2 04/09 14:19
那c++ 的CLASS 是什麼 TYPE?
※ 編輯: x246libra (61.220.35.157), 04/09/2018 15:05:47
→ uranusjr: C++ 的 class 本身無所謂 type 04/09 15:50
→ x246libra: 沒有嗎? 那微軟網站解釋CLASS的TYPE 是? 04/09 19:40
→ firose: 以儲存位置看, C++ 直接建立放在 stack, 用 new 放在 heap 04/09 19:52
→ firose: C# value type 放在 stack, reference type 放在 heap 04/09 19:52
→ uranusjr: C++ 是以語法 (new 與否) 決定, class 本身不決定 04/10 14:27
→ uranusjr: 反過來說即使不是 class 也仍然可以是 value 或 ref 04/10 14:28
→ uranusjr: 所以 class 與否與 valu/reference 是不相干的兩件事 04/10 14:28
→ x246libra: 謝謝您的回覆 04/10 22:46