欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

詳解C++ 中的臨時(shí)對(duì)象

 更新時(shí)間:2020年08月27日 10:21:01   作者:Dabelv  
這篇文章主要介紹了C++ 中的臨時(shí)對(duì)象的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)c++,感興趣的朋友可以了解下

C++中臨時(shí)對(duì)象(Temporary Object)又稱無(wú)名對(duì)象。臨時(shí)對(duì)象主要出現(xiàn)在如下場(chǎng)景。

1.建立一個(gè)沒(méi)有命名的非堆(non-heap)對(duì)象,也就是無(wú)名對(duì)象時(shí),會(huì)產(chǎn)生臨時(shí)對(duì)象。

 Integer inte= Integer(5); //用無(wú)名臨時(shí)對(duì)象初始化一個(gè)對(duì)象

2.構(gòu)造函數(shù)作為隱式類型轉(zhuǎn)換函數(shù)時(shí),會(huì)創(chuàng)建臨時(shí)對(duì)象,用作實(shí)參傳遞給函數(shù)。

例:

class Integer
{
public:
  Integer(int i):m_val(i){}
  ~Integer(){}
private:
  int m_val;
};

void testFunc(Integer itgr)
{
  // do something
}

那么語(yǔ)句:

 int i = 10; 
 testFunc(i); 

會(huì)產(chǎn)生一個(gè)臨時(shí)對(duì)象,作為實(shí)參傳遞到testFunc函數(shù)中。

3.函數(shù)返回一個(gè)對(duì)象時(shí),會(huì)產(chǎn)生臨時(shí)對(duì)象。以返回的對(duì)象最作為拷貝構(gòu)造函數(shù)的實(shí)參構(gòu)造一個(gè)臨時(shí)對(duì)象。

Integer Func()
{
  Integer itgr;
  return itgr;
}

void main()
{
  Integer in;
  in = Func();
}

如下代碼驗(yàn)證以上結(jié)論:

class Integer
{
public:
Integer()
{
 cout<<"Integer default Constructor"<<endl;
};

Integer(const Integer& arg)
{ 
 this->m_val=arg.m_val;
 cout<<"Integer Copy Constructor"<<endl;
};

 Integer(int i):m_val(i){
cout<<"Integer Constructor"<<endl;
};

Integer& operator=(const Integer& arg)
{
  cout<<"Assignment operator function"<<endl;
  this->m_val=arg.m_val;
}

~Integer(){};

int m_val;
};

Integer testFunc(Integer inter)
{
  inter.m_val++;
  cout<<"before return"<<endl;
  return inter;
}
int main(int argc,char* argv[])
{
  Integer inter(5);//Constructor
  Integer resutl; //default constructor
  resutl=testFunc(2);//Constructor,then Copy Constructor,then Assignment operator
  cout<<resutl.m_val<<endl;
  getchar();
  return 0;
}

運(yùn)行結(jié)果:

思考:

1.main函數(shù)中加入如下一條語(yǔ)句會(huì)輸出什么?

Integer re=inter;//輸出Assignment operator還是Copy Constructor

推理應(yīng)該輸出Assignment operator function。但實(shí)際輸出結(jié)果是:Integer Copy Constructor。

原因是:賦值符函數(shù)不能創(chuàng)建新的對(duì)象,它要求”=”的左右對(duì)象均已存在,它的作用就是把”=”右邊的對(duì)象的值賦給左邊的對(duì)象。

2.main函數(shù)中加入如下一條語(yǔ)句會(huì)輸出什么?

Integer re=testFunc(10);

按照以上討論,推理出輸出結(jié)果應(yīng)該是:

Integer Constructor
before return
Integer Copy Constructor
Integer Copy Constructor

但實(shí)際結(jié)果是:

原因是編譯器自動(dòng)優(yōu)化的結(jié)果,只執(zhí)行一次Copy Constructor來(lái)構(gòu)造新的對(duì)象,不會(huì)再次調(diào)用Copy Constructor,以臨時(shí)對(duì)象來(lái)構(gòu)造新的對(duì)象。

以上就是詳解C++ 中的臨時(shí)對(duì)象的詳細(xì)內(nèi)容,更多關(guān)于c++ 臨時(shí)對(duì)象的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • C++ ostream用法案例詳解

    C++ ostream用法案例詳解

    這篇文章主要介紹了C++ ostream用法案例詳解,本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • 淺談mwArray和一般數(shù)組的區(qū)別

    淺談mwArray和一般數(shù)組的區(qū)別

    下面小編就為大家?guī)?lái)一篇淺談mwArray和一般數(shù)組的區(qū)別。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-12-12
  • C語(yǔ)言實(shí)現(xiàn)登錄注冊(cè)和忘記密碼功能

    C語(yǔ)言實(shí)現(xiàn)登錄注冊(cè)和忘記密碼功能

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)登錄、注冊(cè)和忘記密碼功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-12-12
  • C++中函數(shù)的用法小結(jié)

    C++中函數(shù)的用法小結(jié)

    這篇文章主要為大家分享下本人在閱讀《C++ Primer》函數(shù)一章時(shí)的讀書總結(jié),需要的朋友可以參考下
    2014-02-02
  • 詳析C++中的auto

    詳析C++中的auto

    這篇文章主要介紹了詳析C++中的auto,auto是具有自動(dòng)存儲(chǔ)器的局部變量,C++11中,標(biāo)準(zhǔn)委員會(huì)賦予了auto全新的含義即:auto不再是一個(gè)存儲(chǔ)類型指示符,而作為一個(gè)新的類型指示符來(lái)指示編譯器,下面來(lái)看看文章的詳細(xì)介紹吧
    2022-01-01
  • C++實(shí)現(xiàn)重載矩陣的部分運(yùn)算符

    C++實(shí)現(xiàn)重載矩陣的部分運(yùn)算符

    這篇文章主要為大家詳細(xì)介紹了如何利用C++實(shí)現(xiàn)重載矩陣的部分運(yùn)算符,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)C++有一定幫助,需要的可以參考一下
    2022-10-10
  • C++線程之thread詳解

    C++線程之thread詳解

    這篇文章主要為大家詳細(xì)介紹了C++線程中的thread,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2022-03-03
  • C++實(shí)現(xiàn)LeetCode(134.加油站問(wèn)題)

    C++實(shí)現(xiàn)LeetCode(134.加油站問(wèn)題)

    這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(134.加油站問(wèn)題),本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • C語(yǔ)言中 printf 函數(shù)輸出格式

    C語(yǔ)言中 printf 函數(shù)輸出格式

    這篇文章主要介紹了C語(yǔ)言中 printf 函數(shù)簡(jiǎn)介,通過(guò)實(shí)例代碼給大家介紹Printf輸出格式的相關(guān)知識(shí),需要的朋友可以參考下
    2021-08-08
  • C語(yǔ)言中strlen()函數(shù)的使用詳解

    C語(yǔ)言中strlen()函數(shù)的使用詳解

    strlen函數(shù)是用來(lái)求字符串長(zhǎng)度的函數(shù),這個(gè)函數(shù)遇到‘\0’就會(huì)停止,且這個(gè)長(zhǎng)度不包含‘\0’,這篇文章給大家介紹了C語(yǔ)言中strlen()函數(shù)的使用,感興趣的朋友一起看看吧
    2024-02-02

最新評(píng)論