C++ 如何在C+;中对指向对象的指针调用偏移运算符+;
在我的代码中有这样一个类C++ 如何在C+;中对指向对象的指针调用偏移运算符+;,c++,pointers,operator-overloading,C++,Pointers,Operator Overloading,在我的代码中有这样一个类 #include <iostream> //Not my real code class SomeClass { operator[] (int integer); } SomeClass::operator[] (int integer) { return integer; } #包括 //不是我真正的代码 上课 { 运算符[](整数); } SomeClass::运算符[](整数) { 返回整数; } 我可以在堆栈上创建一个实例
#include <iostream>
//Not my real code
class SomeClass
{
operator[] (int integer);
}
SomeClass::operator[] (int integer)
{
return integer;
}
#包括
//不是我真正的代码
上课
{
运算符[](整数);
}
SomeClass::运算符[](整数)
{
返回整数;
}
我可以在堆栈上创建一个实例,并像这样使用偏移操作符方法
SomeClass instance;
std::cout << instance[1];
SomeClass实例;
std::cout最简单的方法是使用*运算符取消引用,然后使用它。根据sp2danny的评论
std::cout << (*instance)[1];
std::无法记住运算符优先级。它是操作符[]
。这只是一个函数,所以您可以像调用函数一样调用它。例如(*实例)[i]
否,因为必须首先使用一个解引用运算符(->
,*
)对指针进行解引用。我建议实现一个更漂亮的at()
成员函数;因此,std::cout at(1)
@mnunberg:传统智慧(又称标准)认为这样的at
成员函数必须执行边界检查,而操作符[]
不需要。这是正确的,所以我将使用(*instance)[1]谢谢
SomeClass *instance = new SomeClass();
std::cout << *instance[1];
std::cout << (*instance)[1];