0Pricing
C++ Academy · レッスン

const変数とパラメータ

データを変更から保護します

「const変数とパラメータ」はCoddyKit上の無料C++ Academyレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはC++ Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 C++ Academyコースには全4レッスンが含まれています。

const 変数の宣言

const 変数は初期化後に変更できません。コンパイラーがこれを強制するため、誤って書き換えた場合も検出できます。

#include <iostream>

int main() {
    const int maxUsers = 100;
    // maxUsers = 200;   // ERROR
    std::cout << maxUsers << "\n";
}

const 関数引数

値渡しの引数に const を付けると、関数本体がそのローカルコピーを変更できなくなります。これは、意図を示し安全性を高めるのに役立ちます。

#include <iostream>

int doubled(const int n) {
    // n = 0;   // ERROR
    return n * 2;
}

int main() { std::cout << doubled(21) << "\n"; }

const 参照引数

const& で渡すと、大きなオブジェクトのコピーを避けながら変更しないことを保証できます。文字列やコンテナーを渡す標準的な方法です。

#include <iostream>
#include <string>

void printLen(const std::string& s) {  // no copy, no change
    std::cout << s.size() << "\n";
}

int main() { printLen("hello"); }

const へのポインター

const T* は、このポインターを通して指し先の値を変更できないことを意味します。ただし、ポインター自体の指し先は変更できます。

#include <iostream>

int main() {
    int a = 1, b = 2;
    const int* p = &a;
    // *p = 5;   // ERROR: value is const
    p = &b;      // OK: pointer can move
    std::cout << *p << "\n";
}

const ポインター

T* const は const ポインターです。ポインターの指し先は変更できませんが、指し先の値は変更できます。

#include <iostream>

int main() {
    int a = 1;
    int* const p = &a;
    *p = 9;      // OK: value changeable
    // p = nullptr;  // ERROR: pointer is const
    std::cout << *p << "\n";
}

宣言を右から左へ読む

const 宣言は右から左へ読みます。const int* const は「const int への const ポインター」です。値もポインターも変更できません。

const 正当性が重要な理由

適用できる箇所で const を使うと、意図を明示し、バグを防ぎ、コンパイラーによる最適化を可能にできます。この規律を const 正当性と呼びます。

const による const 呼び出し元への対応

const& を受け取る関数は、const 引数と非 const 引数の両方に加えて、一時オブジェクトも受け取れます。非 const 参照は一時オブジェクトに結び付けられません。

const ローカル変数で理解しやすくする

変更しないローカル変数を const として宣言すると、コードが読みやすくなり、誤った再代入を防げます。

#include <iostream>

int main() {
    const double rate = 0.2;
    const double total = 100 * (1 + rate);
    std::cout << total << "\n";
}

値渡しのトップレベル const

値渡しの引数では、トップレベルの const は呼び出し元に影響しません。関数本体だけを制約するため、宣言では省略されることがよくあります。

早い段階で const を付ける

後から const 正当性を追加するより、最初から const 正当にコードを書くほうがはるかに簡単です。引数、参照、ローカル変数には、基本的に const を付ける習慣を身に付けてください。

確認テスト

const についての理解度を確認します。

まとめ

変数、引数、参照、ポインターに const を使う方法と、const へのポインターと const ポインターの違いを学びました。const 正当性は意図を明示し、バグを防ぎ、一時オブジェクトへの結び付けと最適化を可能にします。

よくある質問

「const変数とパラメータ」レッスンは無料ですか?

はい。「const変数とパラメータ」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、C++ Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 C++ Academyコースには全4レッスンが含まれています。

「const変数とパラメータ」で何を学びますか?

データを変更から保護します ブラウザで直接実行するハンズオンコードでC++ Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

C++ Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのC++ Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。

「const変数とパラメータ」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このC++ Academyレッスンでコードを書いて実行できますか?

はい。すべてのC++ Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. const変数とパラメータ
  2. constメンバ関数
  3. constexprとコンパイル時評価
  4. constevalとconstinit
← C++ Academyに戻る