C++ 用語
C++ の説明でしばしば登場する用語ながら言語仕様上は使われていなかったり、違う意味で使われがちな用語をまとめてみることにした。 とりあえずぱっと思いつくものを挙げているがこれから追加することもあるかもしれない。
あくまでも言語仕様内の表現を尊重するならばというものであって、必ずしもこれらの用語を使うのが誤っているという主張ではないことはお断りしておく。 詳しい言語仕様を調べるときは正確な用語を使ったほうが資料を見つけやすいということはありうるので知っておくのが望ましくはあると思う。
STL (Standard Template Library)
C++ の言語仕様の中に STL という言葉はない。 元々はアレクサンドル・ステパノフが作ったライブラリが STL と名乗っていて、その一部が C++ の言語仕様に取り入れられたという経緯がある。
厳密に言えばステパノフのライブラリ、または言語仕様内でそれに由来する範囲を STL と呼ぶのが妥当そうに思うが、別の起源を持つ iostream
や string
なども含めて STL と呼んでいる例も多く、何を指して STL と呼ぶかは明瞭な定義はない。
メソッド、メンバ変数
C++ においてはメソッドという用語は用いられず、メンバ関数が正式である。 メンバ変数という用語もそこそこ定着しているが正式にはデータメンバである。
インスタンス
C++ の言語仕様上の用語としてのインスタンスは関数テンプレートから作られる関数、クラステンプレートから作られるクラスやそのメンバ関数のことである。 プログラミング用語一般ではある型に対応するオブジェクトのことをインスタンスと呼ぶことがあるが C++ の言語仕様ではそのような言い回しをしていない。
メモリ上を占めるデータの塊をオブジェクトといい、それを型で解釈したものを値 (value) と呼ぶという使い分けが一応はある。 オブジェクト指向一般で言うインスタンスに対応する C++ 用語は値であると考えてもおおよそ妥当だろう。 ただ、よほど厳密さが要るときを除いてはオブジェクトと値を正確に使い分けはしないと思う。
万能参照
参照が文脈によって右辺値参照か左辺値参照かが自動的に選択されることがあり、これが万能参照と呼ばれている。
言語機能の組み合わせによって結果的に起こることだということもあり、元々は直接的にこれを指す用語が言語仕様の中に無かった。 スコット・メイヤーズが著書の中で万能参照と呼んだことで万能参照という用語が定着したという経緯がある。
C++17 で転送参照 (Forwarding Reference) という用語が正式名称として与えられた。
条件式
C++ 用語では演算子 ?:
を使った式を条件式という。
for
や while
などで継続条件の部分に書く式を条件式と呼ぶのは誤りで、それらは単に条件 (the condition) と呼ばれている。 C ではこの継続条件の式に制御式 (controlling expression) という用語を使っているが C++ では用語を変えたようだ。
返り値・戻り値
関数から返ってくる値 (return value) のことを返り値や戻り値と呼ぶことがあるが、 JIS では返却値という訳語をあてている。
Discussion