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

C++ 轉(zhuǎn)換函數(shù)用法案例詳解

 更新時(shí)間:2021年09月10日 17:01:50   作者:雙非渣渣的自贖之路  
這篇文章主要介紹了C++ 轉(zhuǎn)換函數(shù)用法案例詳解,本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下

1.標(biāo)準(zhǔn)數(shù)據(jù)之間會(huì)進(jìn)行隱式類型安全轉(zhuǎn)換,規(guī)則如下:

 在這里主要探討c++中類類型與普通類型的轉(zhuǎn)換:

1.類類型轉(zhuǎn)換普通類型

class Fraction
{
public:
	Fraction(int num,int den=1);
	~Fraction();
    //轉(zhuǎn)換函數(shù)
   /*
    轉(zhuǎn)換函數(shù)語(yǔ)法規(guī)則:
     operator Type()
       {
      Type ret ;
      ........
       return ret;
    }
   */
	operator double() const {
		return (double)(m_Numerator*1.0 / m_Denominator);
	}
private:
	int  m_Numerator;
	int m_Denominator;
};
 
 
 
Fraction f(3, 5);
double d = 4 + f;//d=4.6

這里4+f,調(diào)用轉(zhuǎn)換函數(shù)將f轉(zhuǎn)換為0.6

2.普通類型轉(zhuǎn)換為類類型(non-explicit-one-argument ctor)

class Fraction
{
public:
	Fraction(int num,int den=1);
	~Fraction();
	
	Fraction operator+(const Fraction& f) {
		return Fraction(this->m_Numerator * f.m_Denominator + this->m_Denominator * f.m_Numerator,
			f.m_Denominator * this->m_Denominator);
	}
 
private:
	int  m_Numerator;
	int m_Denominator;
};
Fraction f(3, 5);
Fraction d = f + 4;//調(diào)用+運(yùn)算符函數(shù),4會(huì)轉(zhuǎn)為Fraction(4,1),含有接受一個(gè)參數(shù)的構(gòu)造函數(shù),否則也無(wú)法轉(zhuǎn)換

3.同時(shí)含有轉(zhuǎn)換函數(shù)和可以隱式的調(diào)用構(gòu)造函數(shù)(轉(zhuǎn)換構(gòu)造參數(shù))會(huì)報(bào)錯(cuò)

class Fraction
{
public: 
   /*
    轉(zhuǎn)換構(gòu)造函數(shù):
    -有僅有一個(gè)參數(shù)
    -參數(shù)是基本類型
    -參數(shù)是其它類型
   */
	Fraction(int num,int den=1);
	~Fraction();
 
	operator double() const {
		return (double)(m_Numerator*1.0 / m_Denominator);
	}
	Fraction operator+(const Fraction& f) {
		return Fraction(this->m_Numerator * f.m_Denominator + this->m_Denominator * f.m_Numerator,
			f.m_Denominator * this->m_Denominator);
	}
private:
	int  m_Numerator;
	int m_Denominator;
};

報(bào)錯(cuò):   “Fraction::operator +”: 2 個(gè)重載有相似的轉(zhuǎn)換    ,

所以在我們寫(xiě)構(gòu)造函數(shù)都會(huì)使用關(guān)鍵字 explicit 防止類型隱式轉(zhuǎn)換

class Fraction
{
public:
	
	explicit Fraction(int num,int den=1);
	~Fraction();
	operator double() const {
		return (double)(m_Numerator*1.0 / m_Denominator);
	}
	Fraction operator+(const Fraction& f) {
		return Fraction(this->m_Numerator * f.m_Denominator + this->m_Denominator * f.m_Numerator,
			f.m_Denominator * this->m_Denominator);
	}
 
private:
	int  m_Numerator;
	int m_Denominator;
};
Fraction f(3, 5);
Fraction d = f + 4;//報(bào)錯(cuò):不存在從 "double" 轉(zhuǎn)換到 "Fraction" 的適當(dāng)構(gòu)造函數(shù)
double d = f + 4;//可以,f轉(zhuǎn)換

到此這篇關(guān)于C++ 轉(zhuǎn)換函數(shù)用法案例詳解的文章就介紹到這了,更多相關(guān)C++ 轉(zhuǎn)換函數(shù)用法內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論

通山县| 庆城县| 武山县| 永年县| 望城县| 孟州市| 临沂市| 仁化县| 江西省| 大洼县| 香港 | 民丰县| 出国| 昌江| 梁河县| 赫章县| 当阳市| 辽宁省| 乡宁县| 福贡县| 郎溪县| 邯郸县| 大渡口区| 于都县| 神池县| 威信县| 永定县| 宜兰市| 安化县| 油尖旺区| 三门峡市| 台南县| 崇明县| 灵山县| 精河县| 台州市| 天等县| 乃东县| 福鼎市| 仁化县| 綦江县|