考虑下面的简单程序。它只是从A
定义了两个变量B
和MyStruct
,然后初始化A
。
如何使用新的A
指针将B
复制到B
?
如果我使用赋值运算符,则firstMember
的B
将分配有firstMember
的A
,并且每当我更改B.firstMember[i]
的值时,A.firstMember[i]
的值就会更改。我已经知道可以通过函数来完成,但是有没有更简单的方法呢?假设MyStruct
可以有很多指针,那么编写函数似乎并不好。
typedef struct MyStruct
{
int * firstMember;
int secondMember;
} MyStruct;
int main()
{
MyStruct A;
MyStruct B;
Initialize(A); // initializes A such that A.firstMember[0] != 5
B = A;
B.firstMember[0] = 5;
cout<<A.firstMember[0]; // prints 5
return 0;
}
最佳答案
这属于"Rule of 3"。一旦开始在一个类中管理原始指针,您可能很想为此定义一个自定义构造函数,析构函数和赋值运算符。