1. 程式人生 > 其它 >c++惡補系列 - 1 函式轉換(conversion function)

c++惡補系列 - 1 函式轉換(conversion function)

技術標籤:c++程式語言

首先感謝侯捷老師的c++教學視訊,不愧是大師級別從事c++伺服器方向也快一年多了很多c++語法細節都是看侯捷大師的視訊學來的。。。廢話不多說進入主題。

函式轉換 (conversion function)

對於任意類只要是合理的都可以定義自己的函式轉換如以下程式事例:

#ifndef __FRACTION_HH__
#define __FRACTION_HH__

class Fraction
{
public:
    Fraction(int num, int den = 1)
        : m_numerator(num), m_denominator(den)
    {
    }
    operator double() const
    {
        return (double)m_numerator / m_denominator;
    }

private:
    int m_numerator;   //分子
    int m_denominator; //分母
};

#endif
#include "Fraction.hh"
#include <iostream>

using namespace std;

int main()
{
    Fraction f(3, 5);
    double d = 4 + f;
    cout << d << endl;
    return 0;
}

對於程式碼段:double d = 4 + f;

程式通常會有兩種路線選擇:

  1. 程式中是否存在全域性double operator+()
  2. Fraction類中是否存在函式轉換即operatro double() const

對於該程式而言只要程式合理可以實現多個函式轉換。

程式執行結果: