我有一个使用运算符[]访问一些数据的myClass。我们创建的这个类是这样的:
shared_ptr<myClass> ptr (new MyClass);
因此,当我想使用运算符 [] 时,我可以通过两种方式执行此操作:
ptr->operator[]("something"); // 1
(*(ptr.get()))["something"]; // 2
最好的方法是什么?
两者都不是:
(*ptr)["something"];
ptr.get()
用于需要指针值的情况,operator->
用于访问成员,operator*
用于需要引用的情况。在这种情况下,引用是最方便的,因为在使用 ->
时需要拼写出operator[]
的名称。