在 C++ 中使用运算符 [] 时的最佳做法

Best practice when using operator[] in c++

本文关键字:最佳 C++ 运算符      更新时间:2023-10-16

我有一个使用运算符[]访问一些数据的myClass。我们创建的这个类是这样的:

shared_ptr<myClass> ptr (new MyClass);

因此,当我想使用运算符 [] 时,我可以通过两种方式执行此操作:

ptr->operator[]("something");  // 1
(*(ptr.get()))["something"];   // 2

最好的方法是什么?

两者都不是:

(*ptr)["something"];

ptr.get()用于需要指针值的情况,operator->用于访问成员,operator*用于需要引用的情况。在这种情况下,引用是最方便的,因为在使用 -> 时需要拼写出operator[]的名称。