25 运算符重载(四)

来源:互联网 发布:自学linux书籍推荐 编辑:程序博客网 时间:2024/04/30 05:01

类型转换运算符

//Integer.h#ifndef _INTEGER_H_#define _INTEGER_H_class Integer{public:    Integer(int n);    ~Integer();    Integer& operator++();    //friend Integer& operator++(Integer& i);    Integer operator++(int n);    //friend Integer operator++(Integer& i, int n);    operator int();    void Display() const;private:    int n_;};#endif // _INTEGER_H_//Integer.cpp#include "Integer.h"#include <iostream>using namespace std;Integer::Integer(int n) : n_(n){}Integer::~Integer(){}Integer& Integer::operator ++(){    //cout<<"Integer& Integer::operator ++()"<<endl;    ++n_;    return *this;}//Integer& operator++(Integer& i)//{//  //cout<<"Integer& operator++(Integer& i)"<<endl;//  ++i.n_;//  return i;//}Integer Integer::operator++(int n){    //cout<<"Integer& Integer::operator ++()"<<endl;    //n_++;    Integer tmp(n_);    n_++;    return tmp;}//Integer operator++(Integer& i, int n)//{//  Integer tmp(i.n_);//  i.n_++;//  return tmp;//}Integer::operator int(){    return n_;}void Integer::Display() const{    cout<<n_<<endl;}//main.cpp#include "Integer.h"#include <iostream>using namespace std;int add(int a, int b){    return a + b;}int main(void){    Integer n(100);    n = 200;    n.Display();    int sum = add(n, 100);    cout<<sum<<endl;    //int x = n;    //int y = static_cast<int>(n);    return 0;}

输出:
200
300

->运算符

#include <iostream>using namespace std;class DBHelper{public:    DBHelper()    {        cout<<"DB ..."<<endl;    }    ~DBHelper()    {        cout<<"~DB ..."<<endl;    }    void Open()    {        cout<<"Open ..."<<endl;    }    void Close()    {        cout<<"Close ..."<<endl;    }    void Query()    {        cout<<"Query ..."<<endl;    }};class DB{public:    DB()    {        db_ = new DBHelper;    }    ~DB()    {        delete db_;    }    DBHelper* operator->()    {        return db_;    }private:    DBHelper* db_;};int main(void){    DB db;    db->Open();//重载指针后可以利用对象访问函数,可以达到对内存更加灵活的管理    db->Query();    db->Close();    return 0;}
0 0
原创粉丝点击