考虑下面的简单程序。它只是从A定义了两个变量BMyStruct,然后初始化A

如何使用新的A指针将B复制到B

如果我使用赋值运算符,则firstMemberB将分配有firstMemberA,并且每当我更改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"。一旦开始在一个类中管理原始指针,您可能很想为此定义一个自定义构造函数,析构函数和赋值运算符。

08-16 20:38