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

C++中Operator類型強(qiáng)制轉(zhuǎn)換成員函數(shù)解析

 更新時(shí)間:2013年09月12日 10:21:51   作者:  
轉(zhuǎn)換函數(shù)定義了由<類型說明符1>到<類型說明符2>之間的映射關(guān)系??梢姡D(zhuǎn)換函數(shù)是用來將一種類型的數(shù)據(jù)轉(zhuǎn)換成為另一種類型

類型轉(zhuǎn)換操作符(type conversion operator)是一種特殊的類成員函數(shù),它定義將類類型值轉(zhuǎn)變?yōu)槠渌愋椭档霓D(zhuǎn)換。轉(zhuǎn)換操作符在類定義體內(nèi)聲明,在保留字 operator 之后跟著轉(zhuǎn)換的目標(biāo)類型。轉(zhuǎn)換函數(shù)又稱類型強(qiáng)制轉(zhuǎn)換成員函數(shù),它是類中的一個(gè)非靜態(tài)成員函數(shù)。它的定義格式如下:

復(fù)制代碼 代碼如下:

   class <類型說明符1>
    {
     public:
      operator <類型說明符2>();
      …
    }


這個(gè)轉(zhuǎn)換函數(shù)定義了由<類型說明符1>到<類型說明符2>之間的映射關(guān)系??梢姡D(zhuǎn)換函數(shù)是用來將一種類型的數(shù)據(jù)轉(zhuǎn)換成為另一種類型。

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) 對(duì)象向基本數(shù)據(jù)類型轉(zhuǎn)換:

復(fù)制代碼 代碼如下:

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


結(jié)果:




可見在add(d1,d2)函數(shù)調(diào)用時(shí)隱性地調(diào)用了operator int() const 函數(shù)。

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

復(fù)制代碼 代碼如下:

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




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

2.operator 用于操作符重載:

操作符重載的概念:
將現(xiàn)有操作符與一個(gè)成員函數(shù)相關(guān)聯(lián),并將該操作符與其成員對(duì)象(操作數(shù))一起使用。

注意事項(xiàng):

1) 重載不能改變操作符的基本功能,以及該操作符的優(yōu)先級(jí)順序。

2) 重載不應(yīng)改變操作符的本來含義。

3) 只能對(duì)已有的操作符進(jìn)行重載,而不能重載新符號(hào)。

4) 操作符重載只對(duì)類可用。

5) 以下運(yùn)算符不能被重載:

. 原點(diǎn)操作符(成員訪問符)

* 指向成員的指針

:: 作用域解析符

? : 問號(hào)條件運(yùn)算符

sizeof 操作數(shù)的字節(jié)數(shù)

操作符函數(shù)的一般格式:

return_type operator op(argument list);

return_type:返回類型(要得到什么)

op:要重載的操作符

argument list:參數(shù)列表(操作數(shù)有哪些)

相關(guān)文章

  • 深入理解C語言指針

    深入理解C語言指針

    關(guān)于指針,其是C語言的重點(diǎn),C語言學(xué)的好壞,其實(shí)就是指針學(xué)的好壞。其實(shí)指針并不復(fù)雜,學(xué)習(xí)指針,要正確的理解指針
    2020-02-02
  • C++ ReSharper2021激活碼永久有效

    C++ ReSharper2021激活碼永久有效

    ReSharperC++是為c/c++開發(fā)者打造的一款實(shí)用Visual Studio擴(kuò)展插件,這款插件旨在提升開發(fā)者的效率,今天給大家分享這款軟件的激活方法,需要C++ ReSharper2021激活碼的朋友參考下本文
    2021-06-06
  • 如何給隨機(jī)數(shù)加密

    如何給隨機(jī)數(shù)加密

    隨機(jī)數(shù)加密的簡單算法,需要的朋友可以參考一下
    2013-03-03
  • opencv利用矩形框選中某一區(qū)域并保存為新圖片

    opencv利用矩形框選中某一區(qū)域并保存為新圖片

    這篇文章主要為大家詳細(xì)介紹了opencv利用矩形框選中某一區(qū)域并保存為新圖片,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-01-01
  • 淺析ORB、SURF、SIFT特征點(diǎn)提取方法以及ICP匹配方法

    淺析ORB、SURF、SIFT特征點(diǎn)提取方法以及ICP匹配方法

    這篇文章主要為大家介紹了常用的特征點(diǎn)提取方法(ORB、SURF、SIFT)和ICP匹配方法,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2021-12-12
  • C++類與對(duì)象深入之靜態(tài)成員與友元及內(nèi)部類詳解

    C++類與對(duì)象深入之靜態(tài)成員與友元及內(nèi)部類詳解

    朋友們好,這篇播客我們繼續(xù)C++的初階學(xué)習(xí),現(xiàn)在對(duì)我們對(duì)C++的靜態(tài)成員,友元,內(nèi)部類知識(shí)點(diǎn)做出總結(jié),整理出來一篇博客供我們一起復(fù)習(xí)和學(xué)習(xí),如果文章中有理解不當(dāng)?shù)牡胤?還希望朋友們?cè)谠u(píng)論區(qū)指出,我們相互學(xué)習(xí),共同進(jìn)步
    2022-06-06
  • C語言實(shí)現(xiàn)簡單的貪吃蛇游戲

    C語言實(shí)現(xiàn)簡單的貪吃蛇游戲

    這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)簡單的貪吃蛇游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • C語言求兩個(gè)正整數(shù)的最大公約數(shù)示例代碼

    C語言求兩個(gè)正整數(shù)的最大公約數(shù)示例代碼

    在C語言中求兩個(gè)數(shù)的最大公約數(shù)是學(xué)習(xí)循環(huán)語句的非常經(jīng)典的問題,下面這篇文章主要給大家介紹了關(guān)于C語言求兩個(gè)正整數(shù)的最大公約數(shù)的相關(guān)資料,需要的朋友可以參考下
    2021-12-12
  • C++中的命名空間詳細(xì)介紹

    C++中的命名空間詳細(xì)介紹

    大家好,本篇文章主要講的是C++中的命名空間詳細(xì)介紹,感興趣的同學(xué)趕快來看一看吧,對(duì)你有幫助的話記得收藏一下
    2022-02-02
  • c++ 封裝一個(gè)截圖服務(wù)

    c++ 封裝一個(gè)截圖服務(wù)

    這篇文章主要介紹了c++ 封裝一個(gè)截圖服務(wù)的方法,幫助大家更好的理解和使用c++,感興趣的朋友可以了解下
    2021-01-01

最新評(píng)論