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フィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- const変数とパラメータ
- constメンバ関数
- constexprとコンパイル時評価
- constevalとconstinit