人生のプチ美学を教えてください!!

今までVBAやjavascriptを使ってきたのですが、少しづつVisual StudioでC++を覚えようと思います。

そこで、VBAやJSで使ってきた、「function 関数名(引数)」というのはC++だとどういう記述になるのでしょうか?JSだと

関数の作成----------------------------------
 function getSecond(hour, min, sec)
 {
  var answer = hour * 3600 + min * 60 + sec;
  return(answer);
 }
ここまで------------------------------------

関数の利用----------------------------------
 document.write(getSecond(12, 34, 56));
ここまで------------------------------------

で値が返ってきます。

どうもクラスというのがVBAやJSにはないのでこのクラスがそうなのかと思うのですがいまいち読んでいてわかりません…。

上記のような単純な例だとどのように記述するのですか?
非常に単純な質問ですみません…。

A 回答 (5件)

C++ だから、クラスを使わないと、ということはありません。


VB の function は、C/C++ での関数なので、#1 さんの書き方で OK です。

function 関数名( 引数 )
{
  式;
  return 戻り値;
}
は、C/C++ だと、
戻り値の型 関数名( 引数 )
{
  式;
  return 戻り値;
}
と書けます。

また、
sub プロシージャ名( 引数 )
{
  式;
}
は、C/C++ では、
void プロシージャ(=関数)名( 引数 )
{
  式;
}
と等価になります。
    • good
    • 0
この回答へのお礼

ありがとうございます。クラスを使わなくてもVBやJSのようにできるのですね。
この方法でうまくできました!
しかし、そうするとクラスはどのようなときに使うのか・・・勉強が足りないのでご紹介いただいた本などを読んでみたいと思います。

お礼日時:2007/10/25 02:23

> C++ だから、クラスを使わないと、ということはありません。



賛成。
C++の利点を活かしたいなら、無理やりクラスを使うより、むしろテンプレートを使う方がよいでしょう。

template<typename T>
T getSecond(T hour, T min, T sec)
{
 T answer = hour * T(3600) + min * T(60) * sec;
 return answer;
}
    • good
    • 0
この回答へのお礼

テンプレート・・・初めて知りました。
#4さんの方法でうまくできましたが、似たような方法のようですね。

お礼日時:2007/10/25 02:24

あれ?書いたつもりが消えてましたね。

訂正します。
クラスの利用----------------------------------
CTimeFunc timefunc; //インスタンスの生成。
cout << timefunc.getSecond(12, 34, 56);
ここまで------------------------------------
    • good
    • 0

#1のasuncionさんの書き方はC言語の書き方でクラスじゃないです。


C++言語を学びたいんですよね?
ちゃんと本を買って学ぶことをお勧めします。
「明解 C++」 柴田 望洋 (著)
http://www.amazon.co.jp/%E6%98%8E%E8%A7%A3-C-%E6 …
これだけだと理解に苦しむと思うので、「C++ の絵本」を補助として買うことをお勧めします。
http://www.amazon.co.jp/C-%E3%81%AE%E7%B5%B5%E6% …

確かにクラスは作ったことは無いでしょうがクラスに似たものを既にあなたは利用しています。
document.writeがそれで、documentというオブジェクトのインスタンス(生成されたクラス)のwriteというメンバ関数を利用していますね。C++のクラスは、それを作るという行為です。

クラスなら、
クラスの作成----------------------------------
class CTimeFunc {
public:
 int getSecond(int hour, int min, int sec)
 {
  int answer = hour * 3600 + min * 60 + sec;
  return answer;
 }
};
ここまで------------------------------------

クラスの利用----------------------------------
timefunc; //インスタンスの生成。
cout << timefunc.getSecond(12, 34, 56);
ここまで------------------------------------

ただ関数をクラス化したので、オブジェクト指向としては意味を成していませんが、こんな風に書けると言うことで。
    • good
    • 0
この回答へのお礼

なんとなくわかりました。
クラスを作って、インスタンスを生成して使うのですね。

お礼日時:2007/10/25 02:20

いろいろな書き方がありますが、一例を挙げると下記のようになります。




#include <stdio.h>

int getSecond(int hour, int min, int sec)
{
  return hour * 3600 + min * 60 + sec;
}

int main(void)
{
  printf("%d秒\n", getSecond(12, 34, 56));
  return 0;
}

(注)インデントのため、全角空白を使っています。
    • good
    • 0
この回答へのお礼

ありがとうございます。Cの本を買ってきてみました。
そのような記述になるのですね。

お礼日時:2007/10/25 02:17

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!