gpt4 book ai didi

c++ - 运算符[][] C++

转载 作者:可可西里 更新时间:2023-11-01 16:52:45 24 4
gpt4 key购买 nike

我想重载 operator[][] 以在 C++ 中提供对二维 char 数组的内部访问。

现在我只是重载operator[],就像

class Object
{
char ** charMap ;
char* operator[]( int row )
{
return charMap[row] ;
}
} ;

它工作正常.. 是否可以重写 operator[][]

最佳答案

不要尝试这样做——正如其他人所说,重载 operator [] 的方式实际上免费提供了 [][] 语法。但这不是一件好事。

相反 - 它通过将实现细节 - char* 指针 - 转向外部来破坏类的封装和信息隐藏。一般来说,这是不可取的。

更好的方法是实现一个接受多个参数的 operator [,],或者实际上是一个 operator [][]。但在 C++ 中都不存在。

因此,通常的做法是在多个维度上完全放弃 operator []。一种干净的替代方法是使用 operator () 代替,因为该运算符可以有多个参数:

class Object
{
char ** charMap ;
char& operator ()(int row, int column)
{
return charMap[row][column];
}
};

有关详细信息,请参阅 C++ FAQ Lite 中的文章.

关于c++ - 运算符[][] C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2533235/

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