中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C++中operator type函數的使用方法

發布時間:2020-06-22 22:37:40 來源:億速云 閱讀:351 作者:元一 欄目:開發技術

這期內容當中小編將會給大家帶來有關C++中operator type函數的使用方法,以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

在閱讀C++標準庫的時候,在for_each()章節遇到下面代碼,

#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()); //隱式類型轉換 MeanValue轉化為double
  std::cout<<"mean calue: "<< mv <<std::endl;
}

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

在需要做數據類型轉換時,一般顯式的寫法是:

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

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

operator type(){};

類型轉換函數能夠實現把一個類 類型 轉換成 基本數據類型(int、float、double、char等) 或者 另一個類 類型。
  1. 其定義形式如下,注意不能有返回值,不能有參數,只能返回要轉換的數據類型

只要type是一個類型,包括基本數據類型,自己寫的類或者結構體都可以轉換。

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

1.operator用于類型轉換函數:

類型轉換函數的特征:

1) 型轉換函數定義在源類中;

2) 須由 operator 修飾,函數名稱是目標類型名或目標類名;

3) 函數沒有參數,沒有返回值,但是有return 語句,在return語句中返回目標類型數據或調用目標類的構造函數。

類型轉換函數主要有兩類:

1) 對象向基本數據類型轉換:

#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)對象向不同類的對象的轉換:

#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;
}

上述就是小編為大家分享的C++中operator type函數的使用方法了,如果您也有類似的疑惑,不妨參照上述方法進行嘗試。如果想了解更多相關內容,請關注億速云行業資訊。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

吴江市| 安岳县| 济阳县| 布拖县| 金门县| 涿州市| 左贡县| 青州市| 新竹市| 济南市| 资源县| 聊城市| 拉萨市| 瑞安市| 浠水县| 和硕县| 浮梁县| 同德县| 鄂托克前旗| 贞丰县| 台北县| 吴旗县| 玛沁县| 固安县| 庆阳市| 佛坪县| 庄浪县| 达拉特旗| 新乐市| 柏乡县| 江陵县| 蒙城县| 临澧县| 广灵县| 楚雄市| 平罗县| 夹江县| 余江县| 安塞县| 渝北区| 陵川县|