结构体可以直接赋值吗

在C++中,结构体(struct)可以直接赋值。这是因为C++会自动为每一个结构体提供一个默认的拷贝赋值运算符,这个运算符会逐个复制结构体的成员。

这里有一个例子:

struct Point {
    int x;
    int y;
};

int main() {
    Point p1 = {1, 2};
    Point p2;

    // 直接赋值
    p2 = p1;

    // 现在p2的成员等于p1的成员
    // 所以p2.x == 1, p2.y == 2
    return 0;
}

在这个例子中,我们定义了一个名为Point的结构体,该结构体有两个成员:xy。然后我们创建了两个Point对象p1p2,并使用=运算符将p1赋值给p2,此时p2的成员会被设置为p1的成员的值。

需要注意的是,这种赋值方式是浅拷贝,如果结构体中包含指针,那么只有指针本身会被复制,指针指向的内存不会被复制。如果需要深拷贝,必须自定义拷贝赋值运算符,并在其中实现深拷贝的逻辑。

发表评论

后才能评论