句柄类和指针 我在下面的链接中阅读C++中的句柄类成语。有人提到

句柄类和指针 我在下面的链接中阅读C++中的句柄类成语。有人提到,c++,C++,句柄类通常包含指向对象实现的指针。 使用句柄对象,而不是实现的对象。这 使实现的对象可以自由更改,而不影响 处理对象。这正是指针所发生的情况。对象 更改,但指针中的地址不更改 我的问题是,作者所说的“这正是指针所发生的事情。对象 更改,但指针中的地址不更改。“。请举例说明 感谢您的时间和帮助我认为作者指的是这样一个事实,句柄对象可以被复制、复制、复制,并且引用对象的原始数据内容的更改可以通过每个副本进行访问,就像它可以通过指针进行一样。例如,在本代码中: int a = 5; int *ap1

句柄类通常包含指向对象实现的指针。 使用句柄对象,而不是实现的对象。这 使实现的对象可以自由更改,而不影响 处理对象。这正是指针所发生的情况。对象 更改,但指针中的地址不更改

我的问题是,作者所说的“这正是指针所发生的事情。对象 更改,但指针中的地址不更改。“。请举例说明


感谢您的时间和帮助

我认为作者指的是这样一个事实,句柄对象可以被复制、复制、复制,并且引用对象的原始数据内容的更改可以通过每个副本进行访问,就像它可以通过指针进行一样。

例如,在本代码中:

int a = 5;
int *ap1 = &a;
int *ap2 = ap1;

ap1
ap2
是两个单独的对象,它们指向一个公共对象。可以创建和销毁这些指针对象,而无需更改它们所指向的对象。

这很简单,可能是因为措辞混乱

指针指向的对象可以被程序中的其他内容更改。其(对象的)值可以在代码中的其他位置更改。但是,指针不会更改其指向的位置。这就是为什么

实现的对象可以自由更改,而不影响句柄对象

比如说,

class Class {
    public: int data;
};

int main() {

    Class myClass;

    Class* myClassPointer = &myClass;

    Class* otherPointer = &myClass;
    otherPointer->data = 10;

    cout << myClassPointer->data << endl;  // value changed, pointer still works

    cin.get();
    return 0;

}
类{
公共:int数据;
};
int main(){
类myClass;
Class*myClassPointer=&myClass;
Class*otherPointer=&myClass;
其他指针->数据=10;

老实说,我发现了ByTeS.com上最坏的C++代码示例。它是无法想象的。我会尽量远离那个站点。句柄只是指针的指针,所有的好处都来自于它。它非常混乱,但是在快速浏览了文章之后,我得到了这样的印象。wo语句可以忽略。句柄更像是一个不透明的指针,而不是指向指针的指针。