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

作者: x246libra (楓)   2018-04-09 13:36:24
(一)
在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#?
作者: rbufghj9713 (我只是來潛水)   2018-04-09 13:59:00
一個在stack一個在Heap
作者: jerryh001   2018-04-09 14:19:00
2
作者: uranusjr (←這人是超級笨蛋)   2018-04-09 15:50:00
C++ 的 class 本身無所謂 type
作者: x246libra (楓)   2018-04-09 19:40:00
沒有嗎? 那微軟網站解釋CLASS的TYPE 是?
作者: firose (guest也是也是也是也是也)   2018-04-09 19:52:00
以儲存位置看, C++ 直接建立放在 stack, 用 new 放在 heapC# value type 放在 stack, reference type 放在 heap
作者: uranusjr (←這人是超級笨蛋)   2018-04-10 14:27:00
C++ 是以語法 (new 與否) 決定, class 本身不決定反過來說即使不是 class 也仍然可以是 value 或 ref所以 class 與否與 valu/reference 是不相干的兩件事
作者: x246libra (楓)   2018-04-10 22:46:00
謝謝您的回覆

Links booklink

Contact Us: admin [ a t ] ucptt.com