总之,区别
在于构
是值类型
,类
是引用
类型.这非常重要.
在C++
中,结构
可按值或引用
类型设计
.但是C++
不承认差异
,因此可按值
传递引用
,这会导致各种问题.你会看到C++
迷惑,因为设计者
不知道其中区别
,并且脚踏两边.该混淆的常见示例
是放入
虚函数,但忽略
了使析构器
为虚
.
D严格
区分两者
,使其既可
自我记录,又能避免
因误用另一个
而导致
的各种
错误.
引用
类型本质上是多态
类型(即虚函数
).继承
的多态性
对值类型
毫无意义.
复制
构造器对多态
类型没有意义
,但对值类型
是有意义的.等等.
值和引用
类型间强烈区别
对D来说效果很好
.当然,有些人仍希望鱼熊兼得
,但D
故意使它很难.
是的,可用ref
关键字按引用
传递构
.不过,这不是多态
.
是的,可用域
存储类在栈上
而不是GC
上分配类实例
.它仍然是引用
类型,但编译器
禁止该引用
生存时间超过栈帧
.如果可确定
不会逃逸,Java
会自动在栈上分配
类.