リリース・改善中
Programming language · 1985年公開
C++はCの性能とハードウェア制御にクラス、テンプレート、RAIIなどの抽象化を加えたコンパイル言語で、ゲームエンジンからシステムソフトウェアまで幅広く使われています。
C++は、ビャーネ・ストロヴストルップ(Bjarne Stroustrup)がベル研究所で「C with Classes」という名前で始めた汎用プログラミング言語です。Cとの高い互換性を保ちながら、クラス、テンプレート、例外、演算子オーバーロードなどを加えており、現在はISOの委員会(WG21)が標準を管理しています。C++11以降はおよそ3年ごとに新しい標準が出ており、C++17やC++20を経て「モダンC++」と呼ばれる、より安全で表現力の高い書き方が定着しました。
C++が力を発揮するのは、実行性能やメモリ配置を細かく制御する必要がある分野です。ゲームエンジン、Webブラウザ、データベース、コンパイラ、金融取引システム、組み込み機器など、レイテンシや資源の使い方が重要なソフトウェアが代表例です。「使わない機能にはコストを払わない」というゼロオーバーヘッドの原則により、高水準の抽象化を使いながら、手書きの機械語に近い効率を得られます。
これから学ぶなら、まずお使いのOSに合ったコンパイラ(WindowsならVisual StudioのMSVC、macOSならXcodeコマンドラインツールのClang、Linuxならg++)を入れ、短いプログラムを自分でコンパイルしてみることをおすすめします。文法の学習にはlearncpp.comのような入門講座を、標準ライブラリの確認にはcppreference.comを手元に置くと便利です。最初からstd::vector、std::string、スマートポインタといった標準ライブラリの道具を使う習慣をつけると、手動のメモリ管理によるミスを大きく減らせます。
クラス、テンプレート、インライン関数などの抽象化を使っても、手書きの低水準コードに近い機械語にコンパイルされ、使わない機能にはコストがかかりません。
オブジェクトがスコープを抜けるとデストラクタが自動で呼ばれるため、メモリ、ファイル、ロックなどの資源をガベージコレクタなしで予測どおりに解放できます。
テンプレートで型に依存しないコードを書くことができ、標準ライブラリは実績のあるコンテナ、アルゴリズム、文字列、スレッド機能を提供します。
手続き型、オブジェクト指向、ジェネリック、関数型のスタイルを組み合わせられ、C++20のコンセプトやレンジのように標準も進化を続けています。
WindowsではVisual Studioをインストールし、「C++によるデスクトップ開発」ワークロードを選ぶとMSVCコンパイラが入ります。macOSではターミナルでxcode-select --installを実行し、Xcodeコマンドラインツール(Clang)を入れます。Debian・Ubuntu系のLinuxでは、次のコマンドでg++とCMakeをインストールします。
sudo apt install build-essential cmake新しいターミナルを開き、コンパイラのバージョンが表示されることを確認します。macOSではg++コマンドがApple Clangを指します。Windowsでは「Developer Command Prompt for VS」を開いてclを実行すると、MSVCのバージョンを確認できます。
g++ --versionhello.cppをC++20標準と警告オプションを有効にしてコンパイルし、実行します。WindowsのMSVCでは、cl /EHsc /std:c++20 hello.cppでコンパイルしてhello.exeを実行します。
g++ -std=c++20 -Wall -Wextra -o hello hello.cpp && ./hello#include <iostream>で標準入出力ライブラリを読み込みます。main関数はプログラムの開始点で、<<演算子で文字列をstd::coutに送ると画面に表示されます。return 0はプログラムが正常に終了したことをOSに伝えます。g++に-std=c++20を渡してC++20標準でコンパイルし、生成されたhelloを実行します。
hello.cpp
#include <iostream>
int main() {
std::cout << "Hello, world!\n";
return 0;
}
g++ -std=c++20 -o hello hello.cpp && ./helloインストールから C++ の中心となる考え方まで、6 章で順を追って学びます。
C++ について質問し、経験を共有し、意見を交わす場所です。
まだディスカッションはありません。最初の話題を始めましょう。
コメント 0件
ログイン · ログインするとコメントできます。
最初のコメントを書いてみましょう。