在CSDN上看到有人问关于C++类成员操作符重载的问题,于是发现自己似乎也没关心过东西,于是研究了一些,写下了这篇学习笔记。
我们知道在C++中,+、-、+=,<<等等都是一些重要的操作符。有时候我们想让我们自己的类中的操作符有一些特殊的功能,该怎么办呢!
我们都知道函数重载,其实操作符重载也是基于这一机制的,他让我们能够给这些操作符赋予与原来不同的功能,而使用起来和我们原始的操作符没有什么区别。操作符重载分为类成员重载操作符和非类成员操作符重载。类成员重载操作符在类内部定义,而非类成员操作符重载在类外定义。
OK,啰嗦了这么多,来点实用的。这里我就写了一个我自己的cout。
代码如下:
#include <stdio.h> class MyIo //这个是我自定义的类 { public: const MyIo& operator<<(int dwInt) const ; //这两行就是我们所关心的 const MyIo& operator<<(char* str) const ; //操作符重载 }; const MyIo& MyIo::operator<<(int dwInt) const //重载的实现 { printf("Num : %d",dwInt); return *this; } const MyIo& MyIo::operator<<(char* str) const { printf("String : %s",str); return *this; } void main() { MyIo myout; //类声明,然后就像一般的操作符调用 myout<<123; myout<<"NightXie"; }
这段代码写的很简单,但是重载的功能确实很强大也很有趣。和我一样平时没太注意但是很兴趣的朋友不妨一试。