总之,​​区别​​在于​​构​​是​​值类型​​,​​类​​是​​引用​​类型.这非常重要.

在​​C++​​中,​​结构​​可​​按值或引用​​类型​​设计​​.但是​​C++​​不承认​​差异​​,因此可​​按值​​传递​​引用​​,这会导致各种问题.你会看到​​C++​​迷惑,因为​​设计者​​不知道其中​​区别​​,并且脚踏两边.该混淆的​​常见示例​​是​​放入​​虚函数,但​​忽略​​了使​​析构器​​为​​虚​​.

D​​严格​​区分​​两者​​,使其​​既可​​自我记录,又能​​避免​​因误用​​另一个​​而​​导致​​的​​各种​​错误.

​引用​​类型本质上是​​多态​​类型(即​​虚函数​​).​​继承​​的​​多态性​​对​​值类型​​毫无意义.

​复制​​构造器对​​多态​​类型没有​​意义​​,但对​​值类型​​是有意义的.等等.

​值和引用​​类型间​​强烈区别​​对D来说​​效果很好​​.当然,有些人仍希望​​鱼熊兼得​​,但​​D​​故意使它很难.

是的,可用​​ref​​关键字​​按引用​​传递​​构​​.不过,这不是​​多态​​.

是的,可用​​域​​存储类​​在栈上​​而不是​​GC​​上分配​​类实例​​.它仍然是​​引用​​类型,但​​编译器​​禁止​​该引用​​生存时间超过​​栈帧​​.如果可​​确定​​不会逃逸,​​Java​​会自动在栈上​​分配​​类.