說說
最近閑時研究下C++發(fā)現(xiàn)有個重載符號operator,挺有意思就簡單了解下。當然發(fā)現(xiàn)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】