C++ 基本構文

C++ プログラムは、オブジェクトの集合として定義でき、これらのオブジェクトは互いのメソッドを呼び出して相互作用します。ここでは、クラス、オブジェクト、メソッド、インスタンス変数とは何かを簡単に見ていきましょう。

  • オブジェクト -オブジェクトは状態と振る舞いを持ちます。例: 犬の状態 - 色、名前、品種、振る舞い - しっぽを振る、吠える、食べる。オブジェクトはクラスのインスタンスです。
  • クラス -クラスは、オブジェクトの振る舞い/状態を記述するテンプレート/設計図として定義できます。
  • メソッド -基本的に、メソッドは1つの振る舞いを表します。クラスは複数のメソッドを含むことができます。メソッド内にロジックを記述し、データを操作し、すべてのアクションを実行できます。
  • インスタンス変数 -各オブジェクトは独自のインスタンス変数を持ちます。オブジェクトの状態は、これらのインスタンス変数の値によって作られます。

C++ プログラム構造

単語を出力する簡単なコードを見てみましょうHello World。

例

#include <iostream> using namespace std; // main() はプログラムの実行が始まる場所です int main() { cout << "Hello World"; // Hello World を出力 return 0; }

次に、上記のプログラムを説明します。

  • C++ 言語にはいくつかのヘッダファイルが定義されており、これらにはプログラムに必要な、または役立つ情報が含まれています。上記のプログラムでは、ヘッダファイルが含まれています。<iostream>。
  • 次の行using namespace std;コンパイラに std 名前空間を使用するように指示します。名前空間は、C++ における比較的新しい概念です。
  • 次の行// main() はプログラムの実行が始まる場所ですこれは単一行コメントです。単一行コメントは // で始まり、行末で終わります。
  • 次の行int main()これは 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 を含むディレクトリで実行していることを確認してください。

makefile を使用して C/C++ プログラムをコンパイルすることもできます。

C++ のセミコロン & 文ブロック

C++ では、セミコロンは文の終端記号です。つまり、各文はセミコロンで終了する必要があります。これは論理的な実体の終わりを示します。

例えば、以下は3つの異なる文です。

x = y; y = y+1; add(x, y);

文ブロックは、中括弧で囲まれた、論理的に接続された文の集まりです。例:

{ cout << "Hello World"; // Hello World を出力 return 0; }

C++ は行末を終端記号として扱わないため、1行に複数の文を配置できます。例:

x = y; y = y+1; add(x, y);

次と同等です

x = y; y = y+1; add(x, y);

C++ 識別子

C++ 識別子は、変数、関数、クラス、モジュール、またはその他のユーザー定義項目を識別するための名前です。識別子は、文字 A-Z または a-z またはアンダースコア _ で始まり、その後に0個以上の文字、アンダースコア、数字(0-9)が続きます。

C++ 識別子内では、@、&、% などの句読文字は許可されません。C++ は大文字と小文字を区別するプログラミング言語です。したがって、C++ では、Manpowerとmanpowerは2つの異なる識別子です。

以下に有効な識別子をいくつか示します。

mohd       zara    abc   move_name  a_123
myname50   _temp   j     a23b9      retVal

C++ キーワード

次の表は、C++ の予約語を示しています。これらの予約語は、定数名、変数名、その他の識別子名として使用できません。

asmelsenewthis
autoenumoperatorthrow
boolexplicitprivatetrue
breakexportprotectedtry
caseexternpublictypedef
catchfalseregistertypeid
charfloatreinterpret_casttypename
classforreturnunion
constfriendshortunsigned
const_castgotosignedusing
continueifsizeofvirtual
defaultinlinestaticvoid
deleteintstatic_castvolatile
dolongstructwchar_t
doublemutableswitchwhile
dynamic_castnamespacetemplate 

完全なキーワードの紹介は次を参照してください:C++ のキーワード(予約語)の完全な紹介


トライグラフ

トライグラフとは、別の文字を表すための3文字のシーケンスであり、3文字シーケンスとも呼ばれます。トライグラフは常に2つの疑問符で始まります。

トライグラフはあまり一般的ではありませんが、C++ 標準では特定の文字をトライグラフとして指定することが認められています。以前は、キーボードにない文字を表すために不可欠な方法でした。

トライグラフは、文字列、文字シーケンス、コメント、プリプロセッサディレクティブなど、どこにでも出現できます。

以下に最も一般的に使用されるトライグラフを示します。

トライグラフ置換
??=#
??/\
??'^
??([
??)]
??!|
??<{
??>}
??-~

ソースプログラム内に2つの連続する疑問符を置き、プリプロセッサに置換されたくない場合(文字定数、文字列リテラル、プログラムコメント内など)、文字列の自動連結 "...?""?..." またはエスケープシーケンス "...?\?..." を使用する方法があります。

Microsoft Visual C++ 2010 以降、このコンパイラはデフォルトでトライグラフを自動置換しなくなりました。トライグラフの置換を使用する必要がある場合(古いソフトウェアコードとの互換性のためなど)、コンパイラのコマンドラインオプション /Zc:trigraphs を設定する必要があります。

g++ は依然としてデフォルトでトライグラフをサポートしていますが、コンパイル警告を出力します。

C++ の空白

空白のみを含む行は空白行と呼ばれ、コメントが含まれる場合もありますが、C++ コンパイラはそれを完全に無視します。

C++ では、空白は空白文字、タブ、改行、コメントを表すために使用されます。空白は文の各部分を区切り、コンパイラが文内の要素(int など)がどこで終わり、次の要素がどこで始まるかを認識できるようにします。したがって、次の文では:

int age;

ここでは、int と age の間に少なくとも1つの空白文字(通常は空白)が必要で、これによりコンパイラはそれらを区別できます。一方、次の文では:

fruit = apples + oranges;   // 获取水果的总数

fruit と =、または = と apples の間の空白文字は必須ではありませんが、可読性を高めるために、必要に応じて空白を追加できます。

その他の拡張