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

C++隱式類型轉(zhuǎn)換運(yùn)算符operator type()用法詳解

 更新時間:2020年06月22日 10:48:26   作者:Gesündeste  
這篇文章主要介紹了C++隱式類型轉(zhuǎn)換運(yùn)算符operator type()用法詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下

在閱讀<<C++標(biāo)準(zhǔn)庫>>的時候,在for_each()章節(jié)遇到下面代碼,

#include "algostuff.hpp"

class MeanValue{
private:
  long num;
  long sum;
public:
  MeanValue():num(0),sum(0){
  }

  void operator() (int elem){
    num++;
    sum += elem;
  }
  operator double(){
    return static_cast<double>(sum) / static_cast<double>(num);
  }
};

int main()
{
  std::vector<int> coll;
  INSERT_ELEMENTS(coll,1,8);
  double mv = for_each(coll.begin(),coll.end(),MeanValue()); //隱式類型轉(zhuǎn)換 MeanValue轉(zhuǎn)化為double
  std::cout<<"mean calue: "<< mv <<std::endl;
}

對于類中的operator double(){},第一次見到這個特別的函數(shù),其實他是"隱式類型轉(zhuǎn)換運(yùn)算符",用于類型轉(zhuǎn)換用的.

在需要做數(shù)據(jù)類型轉(zhuǎn)換時,一般顯式的寫法是:

type1 i;
type2 d;
i = (type1)d; //顯式的寫類型轉(zhuǎn),把d從type2類型轉(zhuǎn)為type1類型

這種寫法不能做到無縫轉(zhuǎn)換,也就是直接寫 i = d,而不需要顯式的寫(type1)來向編譯器表明類型轉(zhuǎn)換,要做到這點就需要“類型轉(zhuǎn)換操作符”,“類型轉(zhuǎn)換操作符”可以抽象的寫成如下形式:

operator type(){};

只要type是一個類型,包括基本數(shù)據(jù)類型,自己寫的類或者結(jié)構(gòu)體都可以轉(zhuǎn)換。

隱式類型轉(zhuǎn)換運(yùn)算符是一個特殊的成員函數(shù):operator 關(guān)鍵字,其后跟一個類型符號。你不用定義函數(shù)的返回類型,因為返回類型就是這個函數(shù)的名字。

1.operator用于類型轉(zhuǎn)換函數(shù):

類型轉(zhuǎn)換函數(shù)的特征:

1) 型轉(zhuǎn)換函數(shù)定義在源類中;

2) 須由 operator 修飾,函數(shù)名稱是目標(biāo)類型名或目標(biāo)類名;

3) 函數(shù)沒有參數(shù),沒有返回值,但是有return 語句,在return語句中返回目標(biāo)類型數(shù)據(jù)或調(diào)用目標(biāo)類的構(gòu)造函數(shù)。

類型轉(zhuǎn)換函數(shù)主要有兩類:

1) 對象向基本數(shù)據(jù)類型轉(zhuǎn)換:

#include<iostream>
#include<string>
using namespace std;
 
class D{
public:
  D(double d):d_(d) {}
  operator int() const{
    std::cout<<"(int)d called!"<<std::endl;
    return static_cast<int>(d_);
  }
private:
  double d_;
};
 
int add(int a,int b){
  return a+b;
}
 
int main(){
  D d1=1.1;
  D d2=2.2;
  std::cout<<add(d1,d2)<<std::endl;
  system("pause");
  return 0;
}

2)對象向不同類的對象的轉(zhuǎn)換:

#include<iostream>
class X;
class A
{
public:
  A(int num=0):dat(num) {}
  A(const X& rhs):dat(rhs) {}
  operator int() {return dat;}
private:
  int dat;
};
 
class X
{
public:
  X(int num=0):dat(num) {}
  operator int() {return dat;}
  operator A(){
    A temp=dat;
    return temp;
  }
private:
  int dat;
};
 
int main()
{
 X stuff=37;
 A more=0;
 int hold;
 hold=stuff;
 std::cout<<hold<<std::endl;
 more=stuff;
 std::cout<<more<<std::endl;
 return 0;
}

上面這個程序中X類通過“operator A()”類型轉(zhuǎn)換來實現(xiàn)將X類型對象轉(zhuǎn)換成A類型。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • C++應(yīng)用Eigen庫對應(yīng)實現(xiàn)matlab中部分函數(shù)問題

    C++應(yīng)用Eigen庫對應(yīng)實現(xiàn)matlab中部分函數(shù)問題

    這篇文章主要介紹了C++應(yīng)用Eigen庫對應(yīng)實現(xiàn)matlab中部分函數(shù)問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • C++實現(xiàn)批量圖片拼接

    C++實現(xiàn)批量圖片拼接

    這篇文章主要為大家詳細(xì)介紹了C++實現(xiàn)批量圖片拼接,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • C語言使用strcmp()函數(shù)比較兩個字符串的實現(xiàn)

    C語言使用strcmp()函數(shù)比較兩個字符串的實現(xiàn)

    這篇文章主要介紹了C語言使用strcmp()函數(shù)比較兩個字符串的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • 淺析C++中memset,memcpy,strcpy的區(qū)別

    淺析C++中memset,memcpy,strcpy的區(qū)別

    本篇文章是對C++中memset,memcpy,strcpy的區(qū)別進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-07-07
  • C++的頭文件和實現(xiàn)文件詳解

    C++的頭文件和實現(xiàn)文件詳解

    這篇文章主要介紹了C++的頭文件和實現(xiàn)文件詳解的相關(guān)資料,需要的朋友可以參考下
    2015-01-01
  • C++實現(xiàn)LeetCode(115.不同的子序列)

    C++實現(xiàn)LeetCode(115.不同的子序列)

    這篇文章主要介紹了C++實現(xiàn)LeetCode(115.不同的子序列),本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • C++基于灰度圖上色GrayToColorFromOther的實現(xiàn)

    C++基于灰度圖上色GrayToColorFromOther的實現(xiàn)

    本文主要介紹了C++基于灰度圖上色GrayToColorFromOther的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-07-07
  • C/C++位操作實例總結(jié)

    C/C++位操作實例總結(jié)

    這篇文章主要介紹了C/C++位操作實例總結(jié),是C/C++程序設(shè)計中很重要的概念,需要的朋友可以參考下
    2014-08-08
  • C++ 中virtual 虛函數(shù)用法深入了解

    C++ 中virtual 虛函數(shù)用法深入了解

    這篇文章主要介紹了C++ 中virtual 虛函數(shù)用法深入了解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • C++語言const 關(guān)鍵字使用方法圖文詳解

    C++語言const 關(guān)鍵字使用方法圖文詳解

    在類中,如果你不希望某些數(shù)據(jù)被修改,可以使用const關(guān)鍵字加以限定。const 可以用來修飾成員變量、成員函數(shù)以及對象
    2020-01-01

最新評論

明溪县| 和林格尔县| 陇南市| 平度市| 林西县| 武强县| 怀化市| 绵竹市| 炎陵县| 精河县| 三台县| 宁阳县| 溧水县| 苗栗市| 冕宁县| 绥棱县| 台北市| 那曲县| 新邵县| 汪清县| 新营市| 连平县| 杭州市| 景宁| 和田县| 甘孜县| 孟州市| 印江| 吴川市| 汤原县| 宁河县| 新龙县| 满洲里市| 车致| 邵东县| 民和| 光泽县| 巴林左旗| 资兴市| 双桥区| 湾仔区|