我有一个使用operator []访问某些数据的myClass。我们这堂课就像这样创作:
shared_ptr<myClass> ptr (new MyClass);
所以当我想使用operator []时,我可以这样做两种方式:
ptr->operator[]("something"); // 1
(*(ptr.get()))["something"]; // 2
最好的方法是什么?
答案 0 :(得分:8)
既不:
(*ptr)["something"];
ptr.get()
适用于需要指针值的情况,operator->
用于访问成员,operator*
适用于需要引用的时间。在这种情况下,引用是最方便的,因为在使用operator[]
时需要拼出->
的名称。