[問題] C++ class type 及 物件生成疑問

看板C_and_CPP作者 (宸火)時間7年前 (2018/04/09 13:36), 7年前編輯推噓1(1010)
留言11則, 5人參與, 7年前最新討論串1/2 (看更多)
(一) 在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

04/09 13:59, 7年前 , 1F
一個在stack
04/09 13:59, 1F

04/09 13:59, 7年前 , 2F
一個在Heap
04/09 13:59, 2F

04/09 14:19, 7年前 , 3F
2
04/09 14:19, 3F
那c++ 的CLASS 是什麼 TYPE? ※ 編輯: x246libra (61.220.35.157), 04/09/2018 15:05:47

04/09 15:50, 7年前 , 4F
C++ 的 class 本身無所謂 type
04/09 15:50, 4F

04/09 19:40, 7年前 , 5F
沒有嗎? 那微軟網站解釋CLASS的TYPE 是?
04/09 19:40, 5F

04/09 19:52, 7年前 , 6F
以儲存位置看, C++ 直接建立放在 stack, 用 new 放在 heap
04/09 19:52, 6F

04/09 19:52, 7年前 , 7F
C# value type 放在 stack, reference type 放在 heap
04/09 19:52, 7F

04/10 14:27, 7年前 , 8F
C++ 是以語法 (new 與否) 決定, class 本身不決定
04/10 14:27, 8F

04/10 14:28, 7年前 , 9F
反過來說即使不是 class 也仍然可以是 value 或 ref
04/10 14:28, 9F

04/10 14:28, 7年前 , 10F
所以 class 與否與 valu/reference 是不相干的兩件事
04/10 14:28, 10F

04/10 22:46, 7年前 , 11F
謝謝您的回覆
04/10 22:46, 11F
文章代碼(AID): #1QollSkJ (C_and_CPP)
文章代碼(AID): #1QollSkJ (C_and_CPP)