最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C++中的自定義函數(shù)返回類(lèi)型

 更新時(shí)間:2022年11月07日 09:35:13   作者:見(jiàn)牛羊  
這篇文章主要介紹了C++中的自定義函數(shù)返回類(lèi)型,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

C++自定義函數(shù)返回類(lèi)型

知識(shí)點(diǎn)小結(jié)

C++的基本數(shù)據(jù)類(lèi)型限制了函數(shù)的返回類(lèi)型,其不像python一樣可以直接返回一個(gè)list,list里面可以包含多個(gè)想要返回的內(nèi)容。

為了能夠讓C++的函數(shù)返回類(lèi)型也可以不受數(shù)量上限制,我們可以先定義一個(gè)我們希望的數(shù)據(jù)類(lèi)型的類(lèi)或者結(jié)構(gòu)體。

如果使用類(lèi)的話(huà),該類(lèi)當(dāng)中只包含成員變量和構(gòu)造函數(shù)。

下面我們定義一個(gè)同時(shí)返回一個(gè)數(shù)字和一個(gè)字符串的數(shù)據(jù)類(lèi)型。

具體代碼如下:

#include <iostream>
using namespace std;
 
//通過(guò)設(shè)置一個(gè)只有構(gòu)造函數(shù)的類(lèi),建立一個(gè)自定義的返回值類(lèi)型
class Returndata
{
public:
  int id;
  string name;
 
public:
  Returndata(int id, string name)
  {
    this->id = id;
    this->name = name;
  }
};
 
Returndata createdata(int id, string name)
{
  Returndata newdata(id, name);
 
  return newdata;
}
 
 
int main()
{
  Returndata a = createdata(1, "bob");
  cout << a.id << " " << a.name << endl;
  return 0;
}

也可以使用結(jié)構(gòu)體,代碼如下:

struct Returndata
{
  int id;
  string name;
};
 
Returndata createdata(int id, string name)
{
  //Returndata newdata(id, name);
  Returndata newdata = {id, name};
  //newdata.id = id;
  //newdata.name = name; 
  return newdata;
} 
 
int main()
{
  Returndata a;
  a = createdata(1, "bob");
  cout << a.id << " " << a.name << endl;
  return 0;
}

C++函數(shù)返回值是自定義類(lèi)型情況

在C++中,函數(shù)的返回值是自定義類(lèi)型的情況主要分為兩種,一種是非引用類(lèi)型的自定義類(lèi);另一種是引用類(lèi)型的自定義類(lèi)。

1 返回值是自定義類(lèi)的非引用類(lèi)型

在這種情況下,使用該類(lèi)拷貝構(gòu)造函數(shù),根據(jù)返回值來(lái)創(chuàng)建該類(lèi)的新的對(duì)象。

class Person {?
Person(int age) {//構(gòu)造函數(shù)?
cout << "param constructor!" << endl;?
mAge = age;?
}
?
public:?
Person(const Person& person) { //拷貝構(gòu)造函數(shù)?
mAge = person.mAge;?
}
?
public:?
int mAge;?
};
?
Person MyFunc() {//返回值為非引用自定義類(lèi)的函數(shù)?
Person q(10);?
return q;?
}

此時(shí),使用如下代碼調(diào)用MyFunc()函數(shù)

Person p = MyFunc();

在MyFunc()函數(shù)返回了Person類(lèi)的變量q之后,會(huì)調(diào)用Person的拷貝構(gòu)造函數(shù),將q的值拷貝給p。需要注意的是,以上代碼并沒(méi)有調(diào)用Person類(lèi)的賦值表達(dá)式。即使不處理MyFunc()函數(shù)的返回值,直接調(diào)用MyFunc()函數(shù)

MyFunc();

此時(shí)依然會(huì)調(diào)用Person的拷貝構(gòu)造函數(shù),只是此時(shí)使用Person的拷貝構(gòu)造函數(shù)將q的值拷貝給一個(gè)臨時(shí)變量。

2 返回值是自定義類(lèi)的引用類(lèi)型

當(dāng)函數(shù)的返回值是自定義類(lèi)的引用類(lèi)型時(shí)

Person& MyFunc() {//返回值為引用自定義類(lèi)的函數(shù)?
Person q(10);?
return q;?
}

如果不對(duì)MyFunc()函數(shù)的返回值進(jìn)行處理,

MyFunc();

此時(shí),不會(huì)調(diào)用Person類(lèi)的拷貝構(gòu)造函數(shù)。而將對(duì)MyFunc()函數(shù)的返回值賦值給其它對(duì)象,

Person p = MyBusiness();

此時(shí)依然會(huì)調(diào)用Person類(lèi)的拷貝構(gòu)造函數(shù)。 

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • OpenCV實(shí)現(xiàn)區(qū)域分割和區(qū)域生長(zhǎng)

    OpenCV實(shí)現(xiàn)區(qū)域分割和區(qū)域生長(zhǎng)

    區(qū)域分割是圖像處理中一個(gè)重要的任務(wù),本文主要介紹了OpenCV實(shí)現(xiàn)區(qū)域分割和區(qū)域生長(zhǎng),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2024-02-02
  • C++生成隨機(jī)數(shù)的實(shí)現(xiàn)代碼

    C++生成隨機(jī)數(shù)的實(shí)現(xiàn)代碼

    這篇文章主要介紹了C++生成隨機(jī)數(shù)的實(shí)現(xiàn)代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-04-04
  • C++ string與int的相互轉(zhuǎn)換(使用C++11)

    C++ string與int的相互轉(zhuǎn)換(使用C++11)

    本文主要介紹了C++ string與int的相互轉(zhuǎn)換(使用C++11),文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • 一文帶你了解C++中的右值引用與移動(dòng)語(yǔ)義

    一文帶你了解C++中的右值引用與移動(dòng)語(yǔ)義

    本篇文章主要為大家詳細(xì)介紹了C++中的右值引用與移動(dòng)語(yǔ)義的相關(guān)知識(shí),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2023-03-03
  • C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)易撲克牌游戲

    C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)易撲克牌游戲

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)易撲克牌游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-10-10
  • c語(yǔ)言實(shí)現(xiàn)多線(xiàn)程動(dòng)畫(huà)程序示例

    c語(yǔ)言實(shí)現(xiàn)多線(xiàn)程動(dòng)畫(huà)程序示例

    這篇文章主要介紹了c語(yǔ)言實(shí)現(xiàn)多線(xiàn)程動(dòng)畫(huà)程序示例,該程序是利用opengl圖形庫(kù)與fmod音頻庫(kù)寫(xiě)的一個(gè)簡(jiǎn)單3d動(dòng)畫(huà)程序,需要的朋友可以參考下
    2014-04-04
  • 深入分析C++中幾個(gè)最不常用的關(guān)鍵字

    深入分析C++中幾個(gè)最不常用的關(guān)鍵字

    本篇文章是對(duì)C++中幾個(gè)最不常用的關(guān)鍵字進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • C語(yǔ)言中字符串的兩種定義方式詳解

    C語(yǔ)言中字符串的兩種定義方式詳解

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言中字符串的兩種定義方式,小編覺(jué)得這篇文章寫(xiě)的還不錯(cuò),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • c語(yǔ)言階乘之和問(wèn)題示例詳解

    c語(yǔ)言階乘之和問(wèn)題示例詳解

    這篇文章主要給大家介紹了關(guān)于c語(yǔ)言階乘之和問(wèn)題的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用c語(yǔ)言具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • 關(guān)于C++靜態(tài)數(shù)據(jù)成員的實(shí)現(xiàn)講解

    關(guān)于C++靜態(tài)數(shù)據(jù)成員的實(shí)現(xiàn)講解

    今天小編就為大家分享一篇關(guān)于關(guān)于C++靜態(tài)數(shù)據(jù)成員的實(shí)現(xiàn)講解,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2018-12-12

最新評(píng)論

崇仁县| 榆中县| 武定县| 綦江县| 金乡县| 乐平市| 永安市| 个旧市| 环江| 五指山市| 丁青县| 尼木县| 青川县| 双桥区| 北流市| 阳曲县| 瓦房店市| 正阳县| 名山县| 安多县| 长岛县| 南乐县| 永兴县| 东兴市| 宜宾县| 湖口县| 亚东县| 漯河市| 南澳县| 昭苏县| 贵溪市| 九寨沟县| 枣强县| 岳阳县| 海晏县| 高邮市| 建平县| 大余县| 岳阳市| 池州市| 皮山县|