gpt4 book ai didi

c++ - 指针上的下标运算符

转载 作者:IT老高 更新时间:2023-10-28 23:11:00 25 4
gpt4 key购买 nike

如果我有一个指向具有重载下标运算符 ([]) 的对象的指针,为什么我不能这样做:

 MyClass *a = new MyClass();
a[1];

但必须这样做:

 MyClass *a = new MyClass();
(*a)[1];

最佳答案

这是因为您不能为指针类型重载运算符;您只能重载一个运算符,其中至少一个参数(操作数)是类类型或枚举类型。

因此,如果您有一个指向某个类类型的对象的指针,该对象重载了下标运算符,则必须取消引用该指针才能调用其重载的下标运算符。

在您的示例中,a 的类型为 MyClass*;这是一个指针类型,所以使用了内置的 operator[] 指针。当你取消引用指针并获得一个MyClass时,你就有了一个类类型的对象,所以使用了重载的operator[]

关于c++ - 指针上的下标运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2808030/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com