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