[问题] 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