真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

C++--函數(shù)對象的分析經(jīng)典問題-創(chuàng)新互聯(lián)

一.函數(shù)對象的分析

Q:客戶的需求
1.函數(shù)可以獲得斐波那契數(shù)列每項的值
2.每調(diào)用一次返回一個值
3.函數(shù)可根據(jù)需求重復(fù)使用

創(chuàng)新互聯(lián)公司的客戶來自各行各業(yè),為了共同目標,我們在工作上密切配合,從創(chuàng)業(yè)型小企業(yè)到企事業(yè)單位,感謝他們對我們的要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團隊有機會用頭腦與智慧不斷的給客戶帶來驚喜。專業(yè)領(lǐng)域包括成都網(wǎng)站建設(shè)、成都做網(wǎng)站、電商網(wǎng)站開發(fā)、微信營銷、系統(tǒng)平臺開發(fā)。
for(int i=0;i<10;i++)
{
    cout<

代碼示例

#include 
#include 

using namespace std;

int fib()
{
    static int a0=0;
    static int a1=1;

    int ret=a1;
    a1=a0+a1;
    a0=ret;

    return ret;
}
int main()
{ 
    for(int i=0; i<10; i++)
    {
        cout << fib() << endl;
    }

    cout << endl;

    for(int i=0; i<5; i++)
    {
        cout << fib() << endl;
    }

    cout << endl;

    for(int i=0; i<5; i++)
    {
        cout << fib() << endl;
    }

    return 0;
}

輸出的結(jié)果如圖所示
C++--函數(shù)對象的分析  經(jīng)典問題
從代碼以及運行結(jié)果我們看到一些存在的問題
1.靜態(tài)局部變量處于函數(shù)內(nèi)部,外界無法改變
2.函數(shù)位全局變量,是唯一的,無法多次獨立使用
3.無法指定某個具體的數(shù)列作為初始值

解決方案:使用函數(shù)對象
1.使用具體的對象取代函數(shù)
2.該類的對象具備函數(shù)調(diào)用的行為
3.構(gòu)造函數(shù)指定具體數(shù)列項的起始位置
4.多個對象相互對立的求解數(shù)列項
函數(shù)的調(diào)用操作符C++--函數(shù)對象的分析  經(jīng)典問題
1.只能通過類的成員函數(shù)重載
2.可以定義不同參數(shù)的多個重載函數(shù)
代碼示例

#include 
#include 

using namespace std;

class Fib
{
    int a0;
    int a1;
public:
    Fib()
    {
        a0 = 0;
        a1 = 1;
    }

    Fib(int n)
    {
        a0 = 0;
        a1 = 1;

        for(int i=2; i<=n; i++)
        {
            int t = a1;

            a1 = a0 + a1;
            a0 = t;
        }
    }

    int operator () ()
    {
        int ret = a1;

        a1 = a0 + a1;
        a0 = ret;

        return ret;
    }
};

int main()
{
    Fib fib;

    for(int i=0; i<10; i++)
    {
        cout << fib() << endl;
    }

    cout << endl;

    for(int i=0; i<5; i++)
    {
        cout << fib() << endl;
    }

    cout << endl;

    Fib fib2(10);

    for(int i=0; i<5; i++)
    {
        cout << fib2() << endl;
    }

    return 0;
}

運行結(jié)果如圖所示
C++--函數(shù)對象的分析  經(jīng)典問題
從多次的運行結(jié)果可以看出,對之前存在的問題進行改正,完成了需求
小結(jié)
1.函數(shù)調(diào)用操作符C++--函數(shù)對象的分析  經(jīng)典問題是可以重載的
2.函數(shù)調(diào)用操作符只能通過類的成員函數(shù)重載
3.函數(shù)調(diào)用操作符可以定義不同參數(shù)的多個重載指針
4.函數(shù)對象用于在工程中取代函數(shù)指針

二.經(jīng)典問題分析

Q:關(guān)于賦值的疑問
1.編譯器為每個類默認重載了賦值操作符
2.默認的賦值操作符僅完成淺拷貝
3.當需要進行深拷貝時必須重載賦值操作符
4.賦值操作符與拷貝構(gòu)造函數(shù)有相同的存在意義
代碼示例

#include 
#include 

using namespace std;

class Test
{
    int* m_pointer;
public:
    Test()
    {
        m_pointer = NULL;
    }
    Test(int i)
    {
        m_pointer = new int(i);
    }
    Test(const Test& obj)
    {
        m_pointer = new int(*obj.m_pointer);
    }

    void print()
    {
        cout << "m_pointer = " << hex << m_pointer << endl;
    }
    ~Test()
    {
        delete m_pointer;
    }
};

int main()
{
    Test t1 = 1;
    Test t2;

    t2 = t1;

    t1.print();
    t2.print();

    return 0;
}

運行結(jié)果如圖所示
C++--函數(shù)對象的分析  經(jīng)典問題
分析:在代碼中由于將t1賦值給t2,導(dǎo)致t1與t2指向的是同一個地址,而在使用完之后,對內(nèi)存進行釋放時對同一個地址釋放了兩次,這個操作在計算機內(nèi)部會造成錯誤
C++--函數(shù)對象的分析  經(jīng)典問題
Q:關(guān)于string的疑問
下面的代碼輸出是什么?

string  s="123456";
const char *p=s.c_str();
cout<

如上所示的代碼想完成的是在字符串123456后面添加abced
可實際的運行結(jié)果如圖所示
C++--函數(shù)對象的分析  經(jīng)典問題
分析
C++--函數(shù)對象的分析  經(jīng)典問題
小結(jié)
1.在需要進行深拷貝的時候必須重載賦值操作符
2.賦值操作符何拷貝構(gòu)造函數(shù)又同等重要的意義

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。


網(wǎng)頁名稱:C++--函數(shù)對象的分析經(jīng)典問題-創(chuàng)新互聯(lián)
網(wǎng)址分享:http://weahome.cn/article/dpdoss.html

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部