查看完整版本: c++問題
頁: [1]

leesparks8 發表於 2019-5-28 07:11 PM

c++問題

本帖最後由 leesparks8 於 2019-5-28 07:12 PM 編輯

以下是課本給的範例,有問題的是下列打紅的地方。為何d=m可以直接呼叫打綠的參數建立者而不是打Distance d(m)呢

//檔案名稱:d:\C++12\C1209.cpp
#include <iostream>
using namespace std;

const float MTF = 3.280833f;

class Distance        //宣告Distance類別
{
        int feet;
        float inch;
public:
        Distance (int f, float in);        //宣告二參數建立者
        Distance (float meter);        //宣告一參數建立者
        friend ostream & operator << (ostream& out, Distance& obj);
};

Distance::Distance (int f, float in)        //定義二參數建立者
{
        feet = f; inch = in;
}

Distance::Distance(float meter)        //定義一參數建立者
{                                        //基本型態轉換類別型態
        float fracfeet = MTF * meter;
        feet = (int)fracfeet;        //float轉成int
        inch = 12 * (fracfeet - feet);
}

ostream & operator << (ostream& out, Distance& obj)
{                                        //多載 << 運算符號
        out  << obj.feet << " 英呎 "
                << obj.inch << " 英吋 ";
        return out;
}

int main(int argc, char** argv)
{
        Distance d(0, 0);        //呼叫二個參數的建立者
        float m = 3.5f;
        d = m;                //呼叫一個參數的建立者
        cout << m << " 公尺 = " << d;
        cout << endl;
        system("PAUSE");
        return 0;
}

...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div><div></div>

tryit244178 發表於 2019-5-29 10:33 AM

本帖最後由 tryit244178 於 2019-5-29 10:33 AM 編輯

這東西好像叫隱性轉換。
話說原始碼裡有表情圖案(艸)真可愛{:47:}

leesparks8 發表於 2019-5-31 07:36 PM

tryit244178 發表於 2019-5-29 10:33 AM static/image/common/back.gif
這東西好像叫隱性轉換。
話說原始碼裡有表情圖案(艸)真可愛

非常抱歉,我是5月31日當天才發現eyny提醒我有人回復我發的問題,謝謝你回答我的問題
頁: [1]