这是一个简单的struct
pub struct Point {
x: uint,
y: uint
}
impl Point {
pub fn new() -> Point {
Point{x: 0u, y: 0u}
}
}
fn main() {
let p = box Point::new();
}
我对构造函数如何工作的理解如下。
new()
函数在其本地堆栈中创建Point
的实例并返回它。来自此实例的数据被浅层复制到box
创建的堆内存中。然后将指向堆内存的指针分配给变量p
。我的理解正确吗?是否会初始化两个单独的内存区域以创建一个实例?与C++相比,这似乎是一种效率低下的初始化实例的方法,在C++中,我们可以直接从构造函数中写入实例的内存。
最佳答案
从relevant guide:
在讨论装箱值(value)时,我相信该机制足够普遍,并不特定于装箱。