这是一个简单的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)时,我相信该机制足够普遍,并不特定于装箱。

10-02 02:28
查看更多