| 網(wǎng)站首頁 | 關(guān)于我們 | 開發(fā)優(yōu)勢 | 產(chǎn)品展示 |
| 合作企業(yè) | 新聞動態(tài) | 聯(lián)系我們 | 電話聯(lián)系 |
文章作者:濟(jì)南軟件開發(fā) 時間:2016年12月20日
目錄
輸入和輸出操作符
算術(shù)操作符和關(guān)系操作符
下標(biāo)操作符
自加、自減操作符
成員訪問操作符
1 輸入和輸出操作符
1.1 輸出操作符
1.1.1 示例
復(fù)制代碼
#include <iostream>
#include <string>
using namespace std;
class A
{
friend ostream& operator<<(ostream& out, const A& a);
public:
A(const string &s = "", int v = 0) : ss(s), val(v) {} //構(gòu)造函數(shù)帶默認(rèn)參數(shù)
private:
int val;
string ss;
};
ostream& operator<<(ostream& out, const A& a)
{
out << "a.ss:" << a.ss << " " << "a.val:" << a.val;
return out;
}
int main()
{
A a("hello", 23);
cout << a << endl;
A b;
cout << b << endl;
}
復(fù)制代碼
結(jié)果
1.1.2 說明
1)IO操作必須為非成員函數(shù)
原因:I/O操作的接口返回的是ostream&對象(只有返回左值,這樣才可以連續(xù)的輸出,例如cout << a << b)。自定義的輸出操作符應(yīng)該與其相似。如果將其定義為成員函數(shù)(有個首默認(rèn)參數(shù)this,即指向自己的指針),左操作數(shù)只能是該類型的對象,則沒法辦到。例如:Sales_item; item << cout; 與常規(guī)定義相反,因此只能為非成員函數(shù)。
2)因?yàn)橐L問指定類的私有成員,所以在該類中聲明輸出操作符為友員函數(shù)。
3)第一個形參必須為引用。因?yàn)镮/O對象不可以復(fù)制。同理返回值必須為一個引用。
4)第一個形參不可以為const,因?yàn)閷懭氲搅鲿淖兤渲怠?/p>
5)第二個為引用,這樣可以避免復(fù)制。參數(shù)可以為const,可以接收const對象和非const對象;否則,如果為非const,則只能接收非coust對象。一般為const,畢竟只是輸出而已,不改變對象。
1.2 輸入操作符
1.2.1 示例
復(fù)制代碼
#include <iostream>
#include <string>
using namespace std;
class A
{
friend ostream& operator<<(ostream& out, const A& a);
friend istream& operator>>(istream& in, A& a);
public:
A(const string &s = "", int v = 0) : ss(s), val(v) {}
private:
int val;
string ss;
};
ostream& operator<<(ostream& out, const A& a)
{
out << "a.ss:" << a.ss << " " << "a.val:" << a.val;
return out;
}
istream& operator>>(istream& in, A& a)
{
in >> a.ss >> a.val;
if(in)
{
cout << "Input right" << endl;
}
else
{
cout << "in.fail:" << in.fail() << endl;
cout << "input wrong!" << endl;
}
return in;
}
int main()
{
A a("hello", 23);
cout << a << endl;
A b;
cin >> b;
cout << b << endl;
想要了解更多詳情歡迎來電咨詢18678812288
登陸網(wǎng)址:m.h6244.cn。
聯(lián)系人:王經(jīng)理。