说说
最近闲时研究下C++发现有个重载符号operator,挺有意思就简单了解下。当然发现operator可以对<<,>>,+,...等等重载的时候,第一时间想到的是cout对字符串的输出。
std::cout << "Hello world" << std::endl;
估计里面用了这个重载符号的技术。一开始百度别人用operator的代码例子,真是看得一头雾水。瑞士军刀代码看得头痛,还是我的C简洁清晰(笑)。
如何使用
上个代码:
#include <iostream>
class A {
public:
void operator <<(char* a);
};
void A::operator <<(char* a)
{
std::cout << a << std::endl;
}
先声明个类A,里面没什么function,只有个operator对<<的重载。如何理解,其实也是不难,大概就是:
[类型] operator [要重载的操作符号] [function]
void operator << (char* a);
平常定义function:
void abc(char* a){
//to do
};
对比下来:
abc 换成 <<
重载就是多了个 operator
这样看下来是不是很清晰,之后写个完整的test:
#include <iostream>
class A{
public:
void operator <<(char* a);
};
void A::operator <<(char* a)
{
std::cout << a << std::endl;
}
int main(){
A a ;
a<<"Hello world";
}
运行结果:
编辑于 【2018.3.13】
网友评论