结构体可以直接赋值吗
在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
的结构体,该结构体有两个成员:x
和y
。然后我们创建了两个Point
对象p1
和p2
,并使用=
运算符将p1
赋值给p2
,此时p2
的成员会被设置为p1
的成员的值。
需要注意的是,这种赋值方式是浅拷贝,如果结构体中包含指针,那么只有指针本身会被复制,指针指向的内存不会被复制。如果需要深拷贝,必须自定义拷贝赋值运算符,并在其中实现深拷贝的逻辑。