下面的代码是验证我是否在类中有一个指针成员,而不是重载赋值运算符.当我使两个实例相等时,它只会使指针指向同一个东西,而不是复制数据.但是,在我验证之前,我在尝试编译时遇到错误.在我看来,它暗示类中的指针成员必须指向堆分配的数据.这样对吗?
错误是:使用参数'aa'的堆栈地址初始化指针成员'a'[-Werror,-Wdangling-field]
第二个问题是我们什么时候需要一个重载的"="运算符?我想当我们在类中有一个指针成员时,我们希望再次复制指针指向的任何内容,而不是仅仅使两个类中的两个指针指向同一个东西.有人可以告诉我这是对的.谢谢!
class ClassA {
int* a;
int* b;
ClassA():a(NULL),b(NULL){};
ClassA(int aa,int bb):a(&aa),b(&bb){};
};
int main(){
ClassA test;
ClassA subject(5,6);
test = subject;
}
Run Code Online (Sandbox Code Playgroud)