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

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

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

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

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

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

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

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

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

具體代碼如下:

#include <iostream>
using namespace std;
 
//通過設(shè)置一個(gè)只有構(gòu)造函數(shù)的類,建立一個(gè)自定義的返回值類型
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ù)返回值是自定義類型情況

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

1 返回值是自定義類的非引用類型

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

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() {//返回值為非引用自定義類的函數(shù)?
Person q(10);?
return q;?
}

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

Person p = MyFunc();

在MyFunc()函數(shù)返回了Person類的變量q之后,會(huì)調(diào)用Person的拷貝構(gòu)造函數(shù),將q的值拷貝給p。需要注意的是,以上代碼并沒有調(diào)用Person類的賦值表達(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 返回值是自定義類的引用類型

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

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

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

MyFunc();

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

Person p = MyBusiness();

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

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

相關(guān)文章

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

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

    區(qū)域分割是圖像處理中一個(gè)重要的任務(wù),本文主要介紹了OpenCV實(shí)現(xiàn)區(qū)域分割和區(qū)域生長,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(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)代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(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),文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • 一文帶你了解C++中的右值引用與移動(dòng)語義

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

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

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

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

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

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

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

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

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

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

    c語言階乘之和問題示例詳解

    這篇文章主要給大家介紹了關(guān)于c語言階乘之和問題的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用c語言具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(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)講解,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2018-12-12

最新評(píng)論

仙桃市| 天津市| 睢宁县| 扎兰屯市| 高碑店市| 靖西县| 晋城| 定南县| 美姑县| 凤城市| 嘉峪关市| 双牌县| 平和县| 衡阳县| 盐山县| 茌平县| 常山县| 绥中县| 巍山| 波密县| 昭通市| 淮滨县| 南川市| 宜兴市| 江油市| 西丰县| 鸡西市| 咸阳市| 永川市| 鹤峰县| 洛宁县| 柳州市| 行唐县| 乌拉特中旗| 盈江县| 鄂州市| 昂仁县| 保定市| 鄂伦春自治旗| 霞浦县| 仁寿县|