C++で定数を定義する方法とは?const修飾子の基本的な使い方を解説
C++で定数(変更できない値)を定義するには、変数を宣言する際に型名の前にconst修飾子を付けるだけです。constを付けた変数は、一度初期化した後は値を書き換えることができません。
コード例
#include<iostream>
using namespace std;
int main() {
const int x = 9; // 定数として x を定義
x = 0; // エラー:定数に値を代入しようとしている
return 0;
}
このコードでは、const int x = 9; によって整数型の定数 x が定義されます。しかし、その直後で x = 0; と定数の値を書き換えようとしているため、コンパイル時にエラーが発生します。
constを使うメリット
- 誤って値を上書きしてしまうバグをコンパイル段階で防げる
- プログラムを読む人が「この値は変更されない」とすぐに理解できる
- コンパイラによる最適化が行われやすくなる場合がある
補足:#defineとの違い
C言語由来の#defineマクロでも定数のようなものを定義できますが、C++では型情報を持つconstや、より厳密なconstexprを使うことが推奨されています。これらは型チェックが行われるため、より安全なコードになります。
-
【初心者向け】C++の例外処理の仕組みを徹底解説!try・catch・throwの基本から独自例外の作成まで
C++における例外処理(Exception Handling)とは、プログラムの実行中に発生するエラー(ランタイムエラー)を適切に処理するための仕組みです。例外とは、実行時に送出されるイベントのことを指し、C++ではすべての標準例外が std::exception クラスを基底クラスとして定義されています。 もし例外を捕捉しなければ、プログラムは例外メッセージを出力した後に異常終了してしまいます。例外はハンドリング可能なランタイムエラーであり、適切に処理することでプログラムの堅牢性を大きく向上させることができます。 標準例外クラスの階層構造 C++標準では、例外は <exception&
-
C#で名前空間(namespace)を定義する方法をわかりやすく解説
名前空間(namespace)は、ある一連の名前を別の一連の名前から分離して管理するための仕組みです。これにより、同じ名前のクラスやメソッドが存在しても、名前の衝突を避けることができます。名前空間の定義は、キーワード namespace に続けて名前空間の名前を記述する形で行います。基本的な構文は以下の通りです。namespace namespace_name { // code declarations }C#での名前空間の使用例次の例では、「first_space」と「second_space」という2つの名前空間を定義し、それぞれに同名のクラス namespace_cl を含めています。