您有未定义的行为,因为您正在取消引用未初始化的指针.那些指针实际上并没有指向任何地方.您需要Abc为它们创建一些指向的对象.一种方法是:
Abc a_object;
Abc b_object;
Abc* a = &a_object;
Abc* b = &b_object;
Run Code Online (Sandbox Code Playgroud)
完成此操作后,您的赋值表达式将复制a->q到b->q.究竟会发生什么取决于定义Qwe(也可以简单复制的价值a->q或调用拷贝赋值运算符).
相反,如果你已经有了一个Qwe*类里面,你也只是复制该指针,而不是它指向的对象.C++默认为值语义,这意味着事物被复制.甚至当你复制一个指针,让你得到另一个指针指向同一个对象与原始,你还在复制指针.所有你需要做鉴定的是什么复制是看看什么是对分配的右手边.在这里我们可以看到它是a->q,我们知道a->q是Qwe这样的Qwe对象被复制.