C++自增自减重载
来源:互联网 发布:数据采集系统应用领域 编辑:程序博客网 时间:2024/04/27 09:07
#include <iostream>
using namespace std;
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
//前置运算符 ++i
//重载为成员函数
//T operator++()
//T operator--()
//重载全局函数
//T operator++(T)
//T operator--(T)
//调用的形式有 ++obj obj.operato4r++() operator++(obj)
//后置运算符作为二元运算符重载 i++
//多写一个参数 具体无意义
//重载为成员函数 T operator++(int) T operator--(int)
//重载为全局函数 T operator++(T, int) T operator--(T,int)
//调用形式有 obj++ obj.operator++(0) operator(obj,0)
class CDemo{
private:
int n;
public:
CDemo(int i = 0):n(i){}
CDemo operator++();//用于前置形式
CDemo operator++(int);//用于后置形式
operator int(){ return n;} //重载括号运算符 强制类型转换符号
friend CDemo operator--(CDemo&);//用于前置形式
friend CDemo operator--(CDemo&,int);//用于后置形式
};
CDemo CDemo::operator++(){//前置++
n++;
return *this;
}
CDemo CDemo::operator++(int k){//后置++
CDemo tmp(*this);//保存修改前的对象 浅复制
n++;
return tmp; //返回修改前的对象
}
CDemo operator--(CDemo& d){//前置--
d.n--;
return d;
}
CDemo operator--(CDemo& d,int){//后置--
CDemo tmp(d);
d.n--;
return tmp;
}
/*
operator int(){ return n;}
int 作为一个类型强制转换运算符被重载
Demo s;
(int) s;//等效与s.int();
类型强制转换运算符重载时
不能写返回值类型
实际上其返回值类型--类型强制转换运算符代表的类型
*/
int main(int argc, char** argv) {
CDemo d(5);
cout<<(d++)<<",";//等价于d.operator(0)
cout<<d<<",";//重载<< 为全局函数
cout<<(++d)<<",";//等价于d.operator++()
cout<<d<<endl;
cout<<(d--)<<",";//等价于operator--(d,0)
cout<<d<<",";//
cout<<(--d)<<",";//等价于operator--(d)
cout<<d<<endl;
return 0;
}
/*
运算符重载注意事项
1 C++不允许定义新的运算符
重载后的运算符的含义符合日常习惯
运算符重载不改变运算符优先级别
**以下运算符不能被重载: . .* :: ?: sizeof
**重载运算符() [] -> 或者赋值运算符=时,重载函数必须声明为类的成员函数。
*/
using namespace std;
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
//前置运算符 ++i
//重载为成员函数
//T operator++()
//T operator--()
//重载全局函数
//T operator++(T)
//T operator--(T)
//调用的形式有 ++obj obj.operato4r++() operator++(obj)
//后置运算符作为二元运算符重载 i++
//多写一个参数 具体无意义
//重载为成员函数 T operator++(int) T operator--(int)
//重载为全局函数 T operator++(T, int) T operator--(T,int)
//调用形式有 obj++ obj.operator++(0) operator(obj,0)
class CDemo{
private:
int n;
public:
CDemo(int i = 0):n(i){}
CDemo operator++();//用于前置形式
CDemo operator++(int);//用于后置形式
operator int(){ return n;} //重载括号运算符 强制类型转换符号
friend CDemo operator--(CDemo&);//用于前置形式
friend CDemo operator--(CDemo&,int);//用于后置形式
};
CDemo CDemo::operator++(){//前置++
n++;
return *this;
}
CDemo CDemo::operator++(int k){//后置++
CDemo tmp(*this);//保存修改前的对象 浅复制
n++;
return tmp; //返回修改前的对象
}
CDemo operator--(CDemo& d){//前置--
d.n--;
return d;
}
CDemo operator--(CDemo& d,int){//后置--
CDemo tmp(d);
d.n--;
return tmp;
}
/*
operator int(){ return n;}
int 作为一个类型强制转换运算符被重载
Demo s;
(int) s;//等效与s.int();
类型强制转换运算符重载时
不能写返回值类型
实际上其返回值类型--类型强制转换运算符代表的类型
*/
int main(int argc, char** argv) {
CDemo d(5);
cout<<(d++)<<",";//等价于d.operator(0)
cout<<d<<",";//重载<< 为全局函数
cout<<(++d)<<",";//等价于d.operator++()
cout<<d<<endl;
cout<<(d--)<<",";//等价于operator--(d,0)
cout<<d<<",";//
cout<<(--d)<<",";//等价于operator--(d)
cout<<d<<endl;
return 0;
}
/*
运算符重载注意事项
1 C++不允许定义新的运算符
重载后的运算符的含义符合日常习惯
运算符重载不改变运算符优先级别
**以下运算符不能被重载: . .* :: ?: sizeof
**重载运算符() [] -> 或者赋值运算符=时,重载函数必须声明为类的成员函数。
*/
0 0
- 自增自减运算符重载
- 重载自增,自减运算符
- C++自增自减重载
- C 自增自减
- 重载自增
- 菜鸟成长之自增自减运算符重载
- c++重载自增和自减操作符
- 重载自增与自减操作符
- C++重载自增和自减操作符
- 自增、自减运算符的重载
- 重载自增和自减操作符
- C++ 重载自增和自减操作符
- 运算符重载之自增自减篇
- C++运算符重载(9) - 自增和自减
- C++中操作符重载自增\自减
- 四、自增自减运算符重载
- C语言自增自减
- c语言自增/自减运算
- 回文词
- 堆排序算法
- 程序员必读书单
- 开始iOS 7中自动布局教程(一)
- UIView及其子类
- C++自增自减重载
- C++builder的文件读写操作总结(2)
- C++builder的文件读写操作总结(1)
- iOS打IPA包
- Qt汉字得到汉字拼音首字母
- 黑马程序员07 IO流
- 快学Scala习题解答—第十一章 操作符
- tiny_mce
- 散列技术之线性探测法