C++关于类指针的一些问题

如果现在有一个类指针,记录的是地址
MyClass *A,*B
A->Func() 和 (*A).Func()有区别吗?
如果想改变指针指向的地址,应该用
A=B 还是 *A=*B ?

(1)没有区别
(2)A=B

【以下回答由 GPT 生成】

问题回答:

  1. A->Func()(*A).Func()的效果是相同的,都是调用指针所指向对象的成员函数Func()A->Func()是使用指针成员访问操作符(->)直接调用成员函数,(*A).Func()是通过解引用操作符(*)将指针解引用为对象后再调用成员函数。两者的结果是相同的,只是书写方式不同。

  2. 如果想改变指针指向的地址,应该使用A=BA=B 表示将指针变量B的值赋给A,即A和B指向同一个地址。而*A=*B 的意思是将指针B所指向的对象赋值给指针A所指向的对象,而不是改变指针的指向。这两个操作的结果是不同的。使用 A=B 可以改变指针的指向地址,而不是改变指针所指对象的值。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^

引用GPT:
1.A->Func()和(*A).Func()的效果是相同的,都是调用指针所指向对象的成员函数Func()。A->Func()是使用指针成员访问操作符(->)直接调用成员函数,(A).Func()是通过解引用操作符()将指针解引用为对象后再调用成员函数。两者的结果是相同的,只是书写方式不同。

2.如果想改变指针指向的地址,应该使用A=B。A=B 表示将指针变量B的值赋给A,即A和B指向同一个地址。而*A=*B 的意思是将指针B所指向的对象赋值给指针A所指向的对象,而不是改变指针的指向。这两个操作的结果是不同的。使用 A=B 可以改变指针的指向地址,而不是改变指针所指对象的值。