码迷,mamicode.com
首页 > 其他好文 > 详细

自增自减运算符的重载(强制类型转换运算符重载)

时间:2016-07-09 10:42:16      阅读:120      评论:0      收藏:0      [点我收藏+]

标签:

前置运算符重载为一元运算符,后置运算符重载为二元运算符。

Operator int() { return n; }

int作为一个强制类型转换运算符被重载,

Demo s;

(int)s;       //等效于s.int();

强制类型转换运算符重载时,

  • 不能写返回值类型
  • 实际上其返回值类型----强制类型转换运算符代表的类型
  • 只能作为成员函数,不能作为友元函数或普通函数
  • 转换构造函数和类型转换运算符有一个共同的功能:当需要的时候,编译系统会自动调用这些函数,建立一个无名的临时对象(或临时变量)。

运算符重载的注意事项

  • C++不允许定义新的运算符
  • 重载后运算符的含义应该符合日常习惯
  • 运算符重载不改变运算符的优先级
  • 以下运算符不能被重载:“.”,“.*”,“::”,“?:”,sizeof
  • 重载运算符(),[],->或者赋值运算符=时,重载函数必须声明为类的成员函数。
#include <iostream>

using namespace std;

class Ctype
{
private:
    int n;
public:
    Ctype(int m) :n(m) {};
    Ctype  operator ++(int);
    Ctype  operator ++();
    operator int();
};
Ctype  Ctype::operator++(int)
{
    Ctype tmp(*this);
    n++;
    return (tmp);
}
Ctype  Ctype::operator++()
{
    n++;
    return (*this);
}
Ctype::operator int()
{
    return n;
}
int main()
{
    Ctype c(6);
    cout << c++ << endl;
    cout << c << endl;
    cout << ++c << endl;
    return 0;
}

 

自增自减运算符的重载(强制类型转换运算符重载)

标签:

原文地址:http://www.cnblogs.com/helloforworld/p/5655272.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!