C++を触ってみた

C++とはC#とどう違うのか?

正直な話「似たようなモノ」などとは思っていないが、全くの素人が始めるよりは少しはアドバンテージがあるだろうか?などと思いながらVS2008でC++を触ってみた。


とりあえず、Win32のコンソールアプリケーションを作成してみる。

#include "stdafx.h"
#include <iostream>

int main()
{
  std::cout << "hoge" << std::endl;
  return 0;
}

何で『int main()』なんだ?
"void"でイイだろ。そしたら『return 0;』も必要なかろう。
まずここを変更してみる。
//...

void main()
{
  std::cout << "hoge" << std::endl;
}

"::"って何だ?
C#で言うところの"."のようだ。
つまり、
C# =>『Console.WiteLine("foo")』
C++ =>『Console::WiteLine("foo")』
となるワケだ。

ということで、上のコードから"std"を省くには『using namespace std;』を書き加える。
//...

using namespace std;

void main()
{
  cout << "hoge" << endl;
}

"endl"要らね~
"endl"を調べてみると、"end of line"ということらしい。要するに改行されるってことか?だったら"\n"で良くね?
削除!!削除!!削除!!

最終的にはこれでおk。
#include "stdafx.h"
#include <iostream>
using namespace std;

void main()
{
  cout << "foo\n";
}


Cって言ったら"printf"じゃね?
『#include <stdio.h>』を書き加えたら"printf"もちゃんと使えた。
でも、VSのVC++だとstdafx.hファイルに始めから書き加えられていたので、必要なかった。


『Console::WiteLine()』が使えない?
C#でお馴染みの『Console.WiteLine()』を使って出力したい。
これをC++流に直して『Console::WiteLine()』を使うと「...マネージ ターゲット コードには '/clr' が必要です。」みたいなことを言われる。
どうやらWin32のプロジェクトなのがマズイらしい。
ということで、CLRのコンソールアプリケーションを作成すると最初から書かれてました。

// compile with: /clr
#include "stdafx.h"
using namespace System;

int main(array<System::String ^> ^args)
{
  //L => ワイド文字リテラル
  Console::WriteLine(L"Hello World");
  return 0;
}

でも、もしWin32ではこれらが使えないならC#の知識は殆ど無用ってことになるかな...(-_-;)

0 Comments:

Sony Style(ソニースタイル)
デル株式会社

Recent Posts