ストラウストラップのプログラミング入門(3) 第3章のつづき

ストラウストラップのプログラミング入門』を読む。今日は3章の終わりまで。ドリルはまだ。

代入とか型の話とかが出てきた。ちょろっと引っかかったのは、以下。

p.46

この簡単なプログラムを実行してみよう。続いて、doubleの代わりにintを読み取るように変更してみよう。intではsqrt関数が定義されていないため、nをdoubleに代入し、そのsqrtを求めることに注意しよう。

sqrt関数は、intやdoubleの型ごとに定義されているものなの? 「パラメータにintを取るsqrtは定義されていない」の意?

sqrt関数ってこれだよね。

上の関数は、Cのsqrt関数をオーバーロードする、らしい。

たしかに、intは直接パラメータに取れないようだ。

#include "../../std_lib_facilities.h" // from http://www.stroustrup.com/Programming/

int main(){
    cout << "Please enter a int value: ";
    int n;
    cin >> n;
    if(cin.fail()){
        cout << "input error.\n";
        return 1;
    }
    cout << "n == " << n
        << "\nsquare root of n == " << sqrt(n)
        << endl;
    return 0;
}

上のプログラムを実行すると、5を入れても5.0を入れても、富士山麓オウム鳴く(なつかしい)が表示される。

これはintからdoubleへの型変換が行われるからだということは理解してる。