-
【C++】変数の記録寿命(スコープとライフタイム)を理解する static の使い方
はじめに C++の変数は、宣言された場所(スコープ)だけでなく、その値がメモリ上にどれくらいの期間存在し続けるかという「記録寿命(ライフタイム)」の概念を持っています。 例えば、関数の中で宣言された通常の変数は、関数が終了すると同時に消滅しま... -
【C++】変数のスコープとは?グローバル変数とローカル変数の違いを解説
はじめに C++プログラミングにおいて、変数を宣言する「場所」は非常に重要です。なぜなら、変数が宣言された場所によって、その変数がプログラムのどこからアクセスできるかという有効範囲が決まるからです。この有効範囲のことを「スコープ (scope)」と... -
【C++/C言語】文字列のコピー(strcpy)と連結(strcat)を行う方法
はじめに C++やC言語で、char配列で表現されるC言語スタイルの文字列を扱う際、 = で代入したり + で連結したりすることはできません。これらの操作には、標準ライブラリ <cstring>(C言語では <string.h>)で提供されている専用の関数を使う... -
【C++】継承におけるコンストラクタとデストラクタの呼び出し方を完全解説
はじめに C++の継承では、子クラスのオブジェクトが作られるとき、まず親クラスの部分が作られ、その後に子クラスの部分が作られます。この構築プロセスを制御するのがコンストラクタです。逆に、オブジェクトが破棄されるときは、子クラスの部分が先に片... -
【C++】継承におけるコンストラクタとデストラクタの呼び出し順序
はじめに C++の継承において、コンストラクタとデストラクタは子クラスに継承されません。これらは、そのクラスのオブジェクトが生成・破棄される際の固有の処理であるため、各クラスが自身のものを持つ必要があります。 しかし、子クラスのオブジェクトが... -
【C++】オブジェクト指向における「汎化」と「継承」の関係を解説
はじめに オブジェクト指向設計の初期段階では、システムに必要な「モノ」をクラスとして洗い出していきます。その過程で、複数の異なるクラスが、実は多くの共通した性質(データや操作)を持っていることに気づくことがあります。 この、「複数のクラス... -
Pythonプログラムを任意のタイミングで終了させるsys.exit()の使い方
Pythonプログラムを作成していると、エラーが発生した場合や、ユーザーが特定の操作を行った場合など、コードの途中で処理を完全に停止させたい場面があります。 break文がループを抜けるために使われるのに対し、プログラムそのものを終了させるための標... -
Pythonの機能を拡張する import文の基本とモジュールの使い方
Pythonの大きな魅力の一つは、その豊富な「モジュール」にあります。モジュールとは、便利な関数やクラスなどが詰まった、いわば「道具箱」のようなものです。標準で用意されているものや、後から追加できるものなど、世界中の開発者が作った便利な機能を... -
Python入門:forループとrange()関数で繰り返し処理をマスターしよう
プログラミングでは、「決まった回数だけ処理を繰り返す」という操作が頻繁に登場します。Pythonでは、このような繰り返し処理を**forループとrange()関数**を組み合わせることで、非常にシンプルかつ直感的に記述できます。 この記事では、forループの基... -
Pythonループ制御:continue文で現在の処理をスキップする方法
Pythonでループ処理を実装していると、「特定の条件のときだけ、その回の処理をスキップして、次の繰り返しに進みたい」という状況があります。ループ全体を中断するbreak文とは異なり、現在の回だけを飛ばしたい場合に役立つのが**continue文**です。 こ... -
Pythonのループを中断する break文の基本的な使い方
Pythonでwhileループなどの繰り返し処理を書いていると、「特定の条件が満たされたら、ループの途中でもすぐに処理を抜けたい」という場面が出てきます。 この記事では、そのような場合に役立つ**break文**の基本的な使い方について、具体的なコードを交え... -
Python初心者向け:繰り返し処理の基本 while ループの使い方
プログラミングでは、同じ処理を何度も繰り返したい場面がよくあります。例えば、リストの項目を一つずつ処理したり、特定の条件が満たされるまでユーザーからの入力を待ち受けたりする場合です。 この記事では、Pythonにおける繰り返し処理の基本である**... -
Python初心者向け:if文で学ぶ条件分岐の基本とブール型の使い方
Pythonを学び始めると、特定の条件によってプログラムの動きを変えたい場面が多くあります。例えば、「もしユーザーがログインしていたら、マイページを表示する」「もしスコアが100点だったら、お祝いのメッセージを出す」といった具合です。 この記事で... -
【C++】継承で使う protected とは?public / private との違いを解説
はじめに C++のクラスには、メンバへのアクセスを制御するための3つのアクセス指定子があります。 public: 誰でもアクセス可能(公開) private: そのクラスの内部からのみアクセス可能(非公開) protected: そのクラスの内部、およびそのクラスを継承し... -
【C++】クラスの継承入門 | 既存のクラスを再利用して新しいクラスを作る方法
はじめに オブジェクト指向プログラミングの三本柱の一つである「継承 (Inheritance)」は、既にあるクラスの機能(メンバ変数やメンバ関数)を受け継いで、新しいクラスを定義するための強力な仕組みです。 例えば、「乗り物」という基本的なクラスがあれ... -
【C++】デストラクタとは?オブジェクトが消滅する時の自動後片付け処理
はじめに C++のコンストラクタが、オブジェクトが「生まれる」瞬間に自動で呼ばれる初期化処理であるのに対し、「デストラクタ (Destructor)」は、オブジェクトがメモリ上から「消滅する」直前に自動で呼び出される、後片付けのための特別なメンバ関数です... -
【C++】コンストラクタのオーバーロード入門 | オブジェクトの作り方を複数用意する方法
はじめに C++のコンストラクタは、オブジェクトが生成される際に自動で呼び出され、メンバ変数の初期化を行います。通常の関数と同様に、この**コンストラクタもオーバーロード(overload)**することが可能です。 コンストラクタをオーバーロードすること... -
【C++】コンストラクタとは?オブジェクトの初期化を自動化する方法
はじめに C++のクラスからオブジェクトを作成する際、メンバ変数を一つずつ手動で設定するのは手間がかかり、また設定し忘れると、変数が不定な値(ごみデータ)のまま使われてしまう危険性があります。 このような初期化の手間とミスを防ぐために、C++に... -
【C++】カプセル化の2大活用パターン | データ保護と実装の隠蔽
はじめに オブジェクト指向の基本原則である「カプセル化」は、単にデータを private にして隠すだけではありません。その真の目的は、クラスを安全で使いやすい「部品」として成立させることにあります。 カプセル化の活用法は、大きく以下の2つのパター... -
【C++】カプセル化とは?public, private, protected の違いと使い方
はじめに オブジェクト指向プログラミングの三本柱の一つである「カプセル化 (Encapsulation)」は、**データ(メンバ変数)と、それを操作する手続き(メンバ関数)**を一つにまとめ、重要なデータを外部から守るための仕組みです。 C++では、アクセス指定... -
【C++】クラスのオブジェクトをポインタで関数に渡す/関数から返す方法
はじめに C++のクラスから生成したオブジェクトは、関数の引数として渡したり、関数の戻り値として返したりすることができます。構造体の場合と同様に、ここでもポインタを利用するのが、効率的で一般的な手法です。 オブジェクトそのものをコピーして渡す... -
【C++/C言語】C言語スタイルの文字列を操作する標準ライブラリ関数 (strlen, strcpy, strcat)
はじめに C++やC言語で、char配列を使ったC言語スタイルの文字列を扱う際、文字列の長さを取得したり、コピーや連結を行ったりする基本的な操作が頻繁に必要になります。これらの操作を自力で実装するのは大変ですが、標準ライブラリの <cstring> (C... -
【C++/C言語】C言語スタイルの文字列を1文字ずつループ処理する方法
はじめに C++やC言語におけるC言語スタイルの文字列(C-style string)は、内部的には終端NULL文字 ('\0') で終わる文字 (char) の配列です。この「必ず \0 で終わる」という特性を利用することで、文字列の長さを事前に知らなくても、forループやwhileル... -
【C++/C言語】ポインタ (const char*) と配列 (char[]) の違いを徹底解説
はじめに C++やC言語でC言語スタイルの文字列を扱う際、非常によく似た2つの方法があります。 ポインタを使う方法: const char* ptr = "テキスト"; 配列を使う方法: char arr[100]; これらは似て非なるもので、その挙動の違いを理解しないまま使うと、予期... -
【C++/C言語】文字列リテラルをポインタ const char* で扱う方法
はじめに C++やC言語において、"Welcome" のような、ダブルクォーテーションで囲まれた文字列(文字列リテラル)は、プログラムの特別な読み取り専用メモリ領域に格納されます。 このような文字列リテラルをプログラムで扱う際、その文字列が格納されてい... -
【C++/C言語】文字列と文字配列の関係 | 終端NULL文字の重要性
はじめに C++やC言語において、"Hello" のような文字列リテラルは、内部的には文字 (char) の配列として扱われます。 この文字配列には特別なルールがあります。それは、文字列の最後に必ず「終端NULL文字」という、「ここで文字列は終わりです」と示すマ... -
【C++】クラスの配列とポインタの使い方を解説
はじめに C++のクラス(class)は、オブジェクトの「設計図」です。この設計図から、複数のオブジェクト(実体)をまとめて管理したい場合や、オブジェクトを間接的に操作したい場合があります。 int型に配列 (int arr[10];) やポインタ (int* p;) がある... -
【C++】関数のオーバーロード活用の2大パターン(引数の型・数の違い)
はじめに C++の関数のオーバーロードは、「同じ名前で、引数リストが異なる関数を複数定義できる」機能です。この「引数リストが異なる」という条件は、主に2つのパターンに分類できます。 引数のデータ型が異なるパターン 引数の個数が異なるパターン こ... -
【C++】関数のオーバーロード入門 | 同じ名前の関数を複数定義する方法
はじめに C++の強力な機能の一つに、「関数のオーバーロード (overload)」があります。これは、一つのクラス(またはスコープ)の中に、同じ名前を持つ関数を複数定義することができる仕組みです。 例えば、数値を表示する print という関数を作りたい場合... -
【C++】オブジェクト指向の三本柱「カプセル化・継承・多態性」を分かりやすく解説
はじめに オブジェクト指向プログラミング(OOP)は、単にクラスを使ってデータと操作をまとめるだけではありません。その真価は、「オブジェクト指向の三本柱」とも呼ばれる、以下の3つの強力な概念を理解し、活用することで発揮されます。 カプセル化 (E...