概要
成員アクセス演算子をオーバーロードすることで、カプセル化されたデータメンバに対して直接アクセスする方法をカスタマイズすることができます。これは、特定のクラスや構造体がデータの内部表現を隠蔽し、データへのアクセスを制御するために使用されます。
使用場面
スマートポインタ
class SmartPtr {
private:
SomeClass* ptr;
public:
SmartPtr(SomeClass* p) : ptr(p) {}
SomeClass* operator->() {
return ptr;
}
};
プロキシクラス
class RealObject {
public:
void performAction() { /* 操作 */ }
};
class Proxy {
private:
RealObject obj;
public:
RealObject* operator->() {
return &obj;
}
};
ライブラリのインターフェース
class LibraryInterface {
public:
void libraryFunction1() { /* 操作libraryFunction1 */ }
void libraryFunction2() { /* 操作libraryFunction2 */ }
};
class Library {
private:
LibraryInterface obj;
public:
LibraryInterface* operator->() {
return &obj;
}
};