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:
コメントを投稿