现在的位置: 首页 > 综合 > 正文

重载指针运算符

2013年03月10日 ⁄ 综合 ⁄ 共 1485字 ⁄ 字号 评论关闭
#include <iostream>
#include <vector>
using namespace std;
//指针间接引用运算符一定是一个成员函数。它有着额外的,非典型的限制:它必须返回一个对象(或引用),该对象也有一个指针间接引用运算符
class Ob {
public:
  void h() { cout << "4556" << endl; }
};
class Obj {
  Ob k;
public:
      Ob* operator->() {  
      return &k;
    }
};
class ObjContainer {
    Obj a;
public:
    Obj operator->() const {  
      return a;
    }
};
void main() {
    ObjContainer sp;
    sp->h(); 
} ///:~
////////////////////////////
#include <iostream>
#include <vector>
using namespace std;
//指针间接引用运算符一定是一个成员函数。它有着额外的,非典型的限制:它必须返回一个对象(或引用),该对象也有一个指针间接引用运算符
class Ob {
public:
  void h() { cout << "4556" << endl; }
};
class Obj {
  Ob k;
public:
      Ob* operator->() {  
      return &k;
    }
};
class ObjContainer {
    Obj a;
public:
    Obj& operator->() {  
      return a;
    }
};
void main() {
    ObjContainer sp;
    sp->h(); 
} ///:~///:~
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
#include <iostream>
#include <vector>
using namespace std;
//或者必须返回一个指针,被用于选择指针间接引用运算符箭头所指向的内容。
class Obj {
public:
  void h() { cout << "4556" << endl; }
};
class ObjContainer {
    Obj a;
public:
    Obj* operator->() {  
      return &a;
    }
};
void main() {
    ObjContainer sp;
    sp->h(); 
} ///:~
///////////////////////////////////
#include <iostream>
#include <vector>
using namespace std;
//或者必须返回一个指针,被用于选择指针间接引用运算符箭头所指向的内容。
class Obj {
public:
  void h() { cout << "4556" << endl; }
};
class ObjContainer {
    Obj *point;
public:
    Obj* operator->() {  
      return point;
    }
};
void main() {
    ObjContainer sp;
    sp->h(); 
} 
////////////////////////////////////////////////////////////////////////////////////////

抱歉!评论已关闭.