C++の核心構文とオブジェクト指向の基礎を理解する
C++プログラムを考えるとき、それは互いのメソッドを呼び出し合って通信するオブジェクトの集合体として定義できます。それでは、クラス、オブジェクト、メソッド、インスタンス変数が何を意味するか簡単に見ていきましょう。
オブジェクト : 状態と振る舞いを持ちます。例:犬には「色」「名前」「品種」という状態と、「尻尾を振る」「吠える」「食べる」という振る舞いがあります。オブジェクトはクラスのインスタンスです。
クラス : そのタイプのオブジェクトがサポートする振る舞い/状態を記述するテンプレート/設計図と定義できます。
メソッド : 基本的に振る舞いのことです。クラスには多くのメソッドを含めることができます。ロジックが記述され、データが操作され、すべてのアクションが実行されるのはメソッドの中です。
インスタンス変数 : 各オブジェクトは固有のインスタンス変数セットを持ちます。オブジェクトの状態は、これらのインスタンス変数に割り当てられた値によって作られます。
C++プログラムの構造
Hello World と表示する簡単なコードを見てみましょう。
Live Demo#include <iostream>
using namespace std;
// main() is where program execution begins.
int main() {
cout << "Hello World"; // prints Hello World
return 0;
}
上記プログラムの各部分を見てみましょう:
C++言語はいくつかのヘッダーを定義しており、プログラムに必要または有用な情報を含んでいます。このプログラムでは <iostream> ヘッダーが必要です。
using namespace std; という行は、コンパイラに std 名前空間を使用するよう指示します。名前空間はC++に比較的最近追加された機能です。
// main() is where program execution begins. という行は、C++で利用可能な一行コメントです。一行コメントは // で始まり、行の終わりで終わります。
int main() は、プログラム実行が始まるメイン関数です。
cout << "Hello World"; という行により、「Hello World」というメッセージが画面に表示されます。
return 0; は main() 関数を終了し、呼び出し元のプロセスに値0を返します。
C++プログラムのコンパイルと実行
ファイルの保存、コンパイル、実行の手順を見てみましょう:
テキストエディタを開き、上記のコードを追加します。
ファイル名を hello.cpp として保存します。
コマンドプロンプトを開き、ファイルを保存したディレクトリに移動します。
'g++ hello.cpp' と入力し、Enterキーを押してコードをコンパイルします。エラーがなければ、次の行に進み、a.out 実行ファイルが生成されます。
次に 'a.out' と入力してプログラムを実行します。
ウィンドウに Hello World と表示されます。
$ g++ hello.cpp $ ./a.out Hello World
g++ がパスに含まれており、hello.cpp を含むディレクトリで実行していることを確認してください。
C/C++ プログラムは makefile を使ってコンパイルすることもできます。詳細については「Makefileチュートリアル」を参照してください。
C++におけるセミコロンとブロック
C++では、セミコロンは文の終端記号です。つまり、個々の文はすべてセミコロンで終わらなければなりません。これは1つの論理的実体の終わりを示します。
例えば、以下は3つの異なる文です:
x = y; y = y + 1; add(x, y);
ブロックとは、論理的に関連した文の集合を、開始波括弧と終了波括弧で囲んだものです。例えば:
{
cout << "Hello World"; // prints Hello World
return 0;
}
C++は行末を終端記号として認識しません。したがって、文を行のどこに書いても問題ありません。例えば:
x = y; y = y + 1; add(x, y);
は以下と同じです:
x = y; y = y + 1; add(x, y);
C++識別子
C++識別子とは、変数、関数、クラス、モジュール、またはその他のユーザー定義項目を識別するために使用される名前です。識別子は、A-Z、a-z、またはアンダースコア(_)で始まり、それに続くゼロ以上の文字、アンダースコア、数字(0-9)で構成されます。
C++では、@、$、% などの句読点文字を識別子内で使用することはできません。C++は大文字小文字を区別するプログラミング言語です。したがって、Manpower と manpower はC++では別の識別子です。
許容される識別子の例:
mohd zara abc move_name a_123 myname50 _temp j a23b9 retVal
C++キーワード
以下はC++の予約語リストです。これらは定数、変数、またはその他の識別子名として使用できません。
| asm | else | new | this |
| auto | enum | operator | throw |
| bool | explicit | private | true |
| break | export | protected | try |
| case | extern | public | typedef |
| catch | false | register | typeid |
| char | float | reinterpret_cast | typename |
| class | for | return | union |
| const | friend | short | unsigned |
| const_cast | goto | signed | using |
| continue | if | sizeof | virtual |
| default | inline | static | void |
| delete | int | static_cast | volatile |
| do | long | struct | wchar_t |
| double | mutable | switch | while |
| dynamic_cast | namespace | template |
トライグラフ
いくつかの文字には、トライグラフシーケンスと呼ばれる代替表現があります。トライグラフとは、1文字を表す3文字のシーケンスで、常に2つの疑問符で始まります。
トライグラフは、文字列リテラルや文字リテラル内、コメント内、プリプロセッサディレクティブ内など、現れる場所すべてで展開されます。
よく使用されるトライグラフシーケンス:
| トライグラフ | 置換結果 |
|---|---|
| ??= | # |
| ??/ | \ |
| ??' | ^ |
| ??( | [ |
| ??) | ] |
| ??! | | |
| ??< | { |
| ??> | } |
| ??- | ~ |
すべてのコンパイラがトライグラフをサポートしているわけではなく、その混乱を招く性質から使用は推奨されません。
C++におけるホワイトスペース
コメントを含む可能性のある、ホワイトスペースのみの行は空白行と呼ばれ、C++コンパイラは完全に無視します。
ホワイトスペースとは、C++においてスペース、タブ、改行文字、コメントを指す用語です。ホワイトスペースは文の一部分を別の部分から分離し、コンパイラが文内の要素(例:int)がどこで終わり、次の要素がどこから始まるかを識別できるようにします。
ステートメント 1
int age;
上記のステートメントでは、コンパイラが int と age を区別できるよう、少なくとも1つのホワイトスペース文字(通常はスペース)が int と age の間に必要です。
ステートメント 2
fruit = apples + oranges; // Get the total fruit
上記のステートメント2では、fruit と = の間、または = と apples の間にホワイトスペース文字は必須ではありませんが、可読性のために含めても構いません。
C言語
- C++入出力完全ガイド:cin/coutの基本から複数入力まで
- C++演算子完全ガイド:算術・代入・関係・論理・ビット演算子と実例
- C++コメント完全ガイド:読みやすく保守しやすいコードのためのベストプラクティス
- C++ストリームをマスター:cout、cin、cerr、clogの実践ガイド
- C言語の基本構文マスター:トークン、構造、セミコロン
- C++プログラミング言語:概要と主要機能
- C++コメントの完全マスター:ベストプラクティスと構文
- C++定数とリテラル完全解説:型、構文、ベストプラクティス
- C++演算子完全ガイド:種類、使い方、ベストプラクティス
- C++数値型完全ガイド:実践的な使い方と数学関数
- Java基礎:基本構文をマスターする