九九热这里直有精品,1区二区三区在线播放,玖玖爱在线观看资源,国产aⅴ综合网,午夜福利男女,日本亚洲欧美三级,日韩无码黄色导航,内射少妇13区,中文字幕高清网

您身邊的軟件定制專家--9年開發(fā)經(jīng)驗(yàn)為您護(hù)航

18678812288
0531-88887250

[c++]重載操作符

文章作者:濟(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)理。

罗甸县| 朝阳区| 乌鲁木齐县| 涟源市| 诸城市| 辽阳市| 博罗县| 赤峰市| 尼勒克县| 东城区| 嘉荫县| 海门市| 蒲城县| 吉林市| 漳平市| 樟树市| 金阳县| 金乡县| 广平县| 乡城县| 称多县| 武邑县| 光泽县| 漳州市| 新蔡县| 娄烦县| 阿拉善右旗| 茌平县| 汝州市| 仪陇县| 青河县| 裕民县| 祁阳县| 英山县| 南木林县| 庄河市| 隆尧县| 依兰县| 四会市| 平潭县| 阿克|