c++ 运算符重载 你懂的,不说话
来源:互联网 发布:匿名飞控c语言源码讲解 编辑:程序博客网 时间:2024/04/29 20:55
这段代码包含了大部分c++运算符重载的小知识。你懂的
struct foo{ foo(){ std::cout<<__FUNCTION__<<"()"<<std::endl; } foo(int x){ std::cout<<__FUNCTION__<<"(int)"<<std::endl; data = x; } foo(const foo & rhl){ std::cout<<__FUNCTION__<<"(const foo &)"<<std::endl; data = rhl.data; } void operator = (const foo & rhl){ std::cout<<__FUNCTION__<<"(const foo &)"<<std::endl; data = rhl.data; } void operator = (int data){ std::cout<<__FUNCTION__<<"(int)"<<std::endl; this->data = data; } int operator()(){ std::cout<<__FUNCTION__<<std::endl; return data; } int operator()(int data){ std::cout<<__FUNCTION__<<"(int)"<<std::endl; return data; } int operator[](int index){ std::cout<<__FUNCTION__<<"(int)"<<std::endl; return data; } int operator[](float index){ std::cout<<__FUNCTION__<<"(float)"<<std::endl; return data; } int operator[](double index){ std::cout<<__FUNCTION__<<"(double)"<<std::endl; return data; } operator int () const{ std::cout<<__FUNCTION__<<std::endl; return data; } int operator + (int d)const { std::cout<<__FUNCTION__<<std::endl; return data + d; } int operator ++(int){ std::cout<<__FUNCTION__<<"(int)"<<std::endl; data++; return data; } int operator ++(){ std::cout<<__FUNCTION__<<"()"<<std::endl; ++data; return data; } friend std::ostream & operator << (std::ostream & io, foo & rhl) { std::cout<<__FUNCTION__<<"(std::ostream & io, foo & rhl)"<<std::endl; return io; } int operator << (int data) { std::cout<<__FUNCTION__<<"(int data)"<<std::endl; return data; } int data;};int main(int argc, _TCHAR* argv[]){ foo bar = 10; foo cat = bar; int a = bar + 1; int b = 1 + bar; ++bar; bar++; cat(); cat(1); bar = cat; bar = 1; bar[1]; bar[3.14f]; bar[3.14]; std::cout<<bar; bar<<1; return 0;}
output:
foo::foo(int)
foo::foo(const foo &)
foo::operator +
foo::operator int
foo::operator ++()
foo::operator ++(int)
foo::operator ()
foo::operator ()(int)
foo::operator =(const foo &)
foo::operator =(int)
foo::operator [](int)
foo::operator [](float)
foo::operator [](double)
operator <<(std::ostream & io, foo & rhl)
foo::operator <<(int data)
Press any key to continue . . .
- c++ 运算符重载 你懂的,不说话
- c++-运算符的重载
- C++--运算符的重载
- 逗你玩的运算符重载
- [C/C++]运算符的重载
- C++-运算符重载
- [C++]重载运算符
- C#:运算符重载
- c++-++运算符重载
- C++:重载运算符
- 运算符重载(C++)
- [c++]运算符重载
- 【C++】运算符重载
- C++--------------------------------------------运算符重载
- C#:运算符重载
- C++:运算符重载
- C++:运算符重载
- C#:运算符重载
- 打工是最愚蠢的投资——李嘉诚在大梅沙的演讲~(讲得很给力)
- 如何把UltraEdit加入到系统右键菜单中
- 由外而内的过程改进策略
- 中国式危机公关9加1策略(第十一章 强大执行力原则)
- dede[field:link /] 图片大小
- c++ 运算符重载 你懂的,不说话
- Silverlight DataGrid常用事件
- C#比较两个日期的大小
- AsyncTask的用法
- SecureCRT 使用技巧
- installshield中常用prq文件的下载地址
- A*寻路初探 GameDev.net
- 十个优秀的C语言学习资源推荐
- 【整理】winForm开发经验及知识积累整理(一)