小编Jia*_*iao的帖子

类的指针成员必须指向堆分配的数据?

下面的代码是验证我是否在类中有一个指针成员,而不是重载赋值运算符.当我使两个实例相等时,它只会使指针指向同一个东西,而不是复制数据.但是,在我验证之前,我在尝试编译时遇到错误.在我看来,它暗示类中的指针成员必须指向堆分配的数据.这样对吗?

错误是:使用参数'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)

c c++ pointers

1
推荐指数
1
解决办法
133
查看次数

标签 统计

c ×1

c++ ×1

pointers ×1