【C++初級編】C++の基礎文法と学習方法

2025年1月入社のT.Nです。
プログラミング未経験の私が現場でC++開発してきました。
今回はC++をこれから始める人に向けて、基礎文法と学習方法について記事にできたらと思います。
■C++とは
C言語を拡張して開発された、汎用プログラミング言語の一つです。
C言語にオブジェクト指向プログラミングの概念を追加し、より柔軟で強力なプログラミングが可能になっています。
■C++のメリット、デメリット
◯メリット:
・高速な処理:
機械語に近いC言語を基盤にしているため、実行速度が速く、処理性能が要求されるアプリケーション開発に適しています。
・柔軟なメモリ管理:
メモリの動的割り当てが可能なため、メモリの利用効率を最適化できます。
・オブジェクト指向:
オブジェクト指向のプログラミングが可能で、コードの再利用性や可読性を向上させ、大規模開発に適しています。
・C言語との互換性:
C言語との互換性が高いので、既存のC言語コードを使い回すことができます。
・幅広い用途:
ゲーム、OS、業務システム、組み込みシステム、AI、IoTなど、様々な分野で活用されています。
◯デメリット:
・学習難易度:
C言語よりも複雑な構文やオブジェクト指向の概念があるため、学習コストが高くなります。
・メモリ管理:
メモリの動的割り当てに自由度がある反面、メモリリークやポインタの誤操作によるバグ発生の可能性が高くなります。
・コーディング量:
C言語に比べてコード量が多く、記述が複雑になる場合があります。
・コンパイル時間:
コードが複雑になるほどコンパイルに時間がかかる場合があります。
■C++の基礎
ここからは実際にサンプルコードを使用して、説明します。
・C++のコメントの記載
処理に反映されないものです。
一般的にそのソースが何を処理しているか記載するために使用します。
コメント方法は2つあります。
1: // 行コメント
2: /* */ 範囲コメント
(サンプルコード開始)
//コメントA
/*
コメントB
コメントC
*/
コメントD
*/
(サンプルコード終了)
上記の場合、コメントA~Cまではコメントとして判定されますが、
コメントDは範囲コメント外に記載されているのでコメントされません。
・C++の変数定義
「変数型 (半角スペース)変数名」が基本的な定義方法です。
初期値を入れる場合、「= 初期値」とします。
(サンプルコード開始)
int a;
int b = 30;
(サンプルコード終了)
上記の場合、int型変数aとbの2つが定義されました。
変数bには初期値として30が入っている状態です。
それでは変数aの初期値はどうなっているのでしょうか?
答えは「未定義になっている」です。
未定義の値は危険で、未定義の値が使われた計算結果は不正確な結果になる可能性があります。
後々、変数に値を入れ直すことは出来るので、初期値で0を入れとくことをオススメします。
・C++の基礎構文
原則として、main関数から処理を開始します。
main関数に「Hello World!」と返ってくる処理を作ってみます。
(サンプルコード開始)
#include <iostream>
int main(){
std::cout << "Hello World!" << std::endl;
return 0;
}
(サンプルコード終了)
{}内が処理として認識される場所です。
今回#inculedは割愛します。
・C++の関数処理
関数は下記3つの要素から構成されます。
1:戻り値:関数が処理を終えた際に、呼び出し元に返される値のこと。
2:引数:この関数を呼び出す時に渡す値のこと。
3:処理内容:関数内で行われる処理のこと
実際にkeisan関数を作って、main関数から呼び出してみます。
1.始めにkeisan関数を定義します。
(サンプルコード開始)
int keisan(
int x,
int y)
{
int z = x + y;
return z;
}
(サンプルコード終了)
ここで先程の3つの要素がどれに当たるか説明します。
1:戻り値:int ※keisanの前にあるintです。
2:引数:int x
:int y
3:処理内容:int z = x +y;
return z;
※引数が複数ある場合、上から順に第1引数、第2引数といいます。
2.次に定義したkeisan関数をmainから呼び出してみます。
(サンプルコード開始)
#include <stdio.h>
int keisan(
int x,
int y)
{
int z = x + y;
return z;
}
void main()
{
int a = 10;
int b = 20;
int s = keisan(a, b);
printf("%d", s);
}
(サンプルコード終了)
上記のコードを実行すると30が返ってきます。
main関数を分解して説明します。
main関数では3つの処理をしています。
1.int型変数aとbを定義し、aの初期値に10、bの初期値に20を入れています。
2.変数aとbを引数にkeisan関数を呼び出し、戻り値の値をint型のsに入れています。
3.戻り値sを出力させています。
恐らく1と3は何となくわかると思います。
2が分かりづらいと思いますので、詳細に説明します。
①今回は、第1引数にmain関数の変数a(値が10の変数)、
第2引数にmain関数の変数b(値が20の変数)を設定して関数を呼び出しました。
②keisan関数の第1引数はxのため、aの値(10)をxに格納します。
また、第2引数はyのため、bの値(20)をyに格納します。
③格納後、keisan関数で処理内容となるint z = x + y;が始まります。
④現状xには10、yには20が格納されているため、計算結果30が変数zに格納されます。
⑤最後にreturn z;の処理が行われます。
この処理で、変数zの値(30)を呼び出し元に戻り値として送るため、main関数の変数sに30が格納されます。
以上が詳細に分けた説明になります。
3.別の呼び出しパターンについて
前述にて原則、main関数から呼び出されると書きましたが、
main関数の後にkeisan関数を記述する場合、mainの前にプロトタイプ宣言する必要があります。
下記サンプルコードは2で作成したkeisan関数を呼び出す処理と同じ処理結果になります。
(サンプルコード開始)
#include <stdio.h>
int add(int, int);
void main() {
int a = 10;
int b = 20;
int s = add(a, b);
printf("%d", s);
}
int add(int x, int y) {
int s = x + y;
return s;
}
(サンプルコード終了)
■学習方法
現場で実際に触る場合、実際にC++で製造された機能を見るのが一番早いと思います。
学習方法として、基本設計→ソースコード→詳細設計→ソースコードの順で確認してみましょう。
※私はC++未経験で現場に参画したとき、空いている時間でソースコードから詳細設計の書いてみて、正規の詳細設計との差分を比較し、間違っている箇所があるか確認していました。
最初はボロボロでしたが、「関数の呼び出し方」「ドット演算子とアロー演算子の使い方」がわかったとき、C++の実装が理解出来るようになりました。
他の方に聞いた方法ですが、自己学習の場合は「Udemy」を使って学習していたとの事です。
開発に限らずどの分野でも自己学習には「Udemy」をオススメするといいと言っていました。
※お金が掛かってしまうため、ご使用の際は自己責任でお願い致します。
今回はC++の基礎的な構文の文法について記載させて頂きました。
私も完全未経験から3ヶ月で製造出来るようになりましたので、心配無用です。
自分で調べる意欲があれば出来るようになります。
この記事がどこかで皆さまの役に立てたら幸いです。