>> ZG·言語学習 >  >> 理論言語学 >> 構文

なぜCPP言語でアンダースコアを使用するのですか?

C ++のアンダースコアは、それぞれが特定の意味と使用法を備えたさまざまな目的を果たしています。ここに彼らが果たす重要な役割の内訳は次のとおりです。

1。可変命名:

* プライベートメンバー: クラスでは、主要なアンダースコア(「_name」など)は、従来、プライベートメンバー変数を示しています。これは、クラス内での内部使用を目的としており、外部から直接アクセスするべきではないことを示しています。

* アンダースコアプレフィックス: 変数名(例:「_count」)の前にアンダースコアを使用して、コードの他の部分で潜在的に矛盾する名前と区別することが一般的です。これは、ライブラリまたはフレームワークで特に役立ちます。

2。マクロ定義:

* 前処理: マクロはコンパイラによって前処理されます。 `#define pi 3.14159`のようなマクロ定義は、「pi」が見つかる場所でプレースホルダーを作成します。潜在的な変数名との競合を防ぐために、マクロにはしばしばアンダースコアプレフィックスがあります(例: `_pi`)。

3。予約済みの名前:

* 名前空間スコープ: 「_`シンボルはグローバルネームスペース用に予約されています。つまり、「_」という名前の変数を宣言することはできません。

* 標準ライブラリ: 一部の標準的なライブラリ識別子は、アンダースコアから始まります。これは、それらがパブリックAPIの一部ではなく、ユーザー定義の名前では避ける必要があることを示しています。

4。特別な機能:

* コンストラクターとデストラクタ: クラスコンストラクターとデストラクタは、名前の一部としてアンダースコアを使用して宣言できます(例: `_myclass()`、 `〜_myclass()`)。これはまれですが、許可されています。

5。ビットフィールド:

* ビットフィールドでのアンダースコア: 厳密には必要ありませんが、アンダースコアはビットフィールド宣言の読みやすさを向上させることができます。例えば:

`` cpp

structフラグ{

符号なしint _flag1:1; // 1ビット

符号なしint _flag2:2; // 2ビット

};

`` `

6。プレースホルダー変数:

* 未使用変数: 一部のシナリオでは、直接使用しない変数がある場合があります。 コンパイラの警告を防ぐために、単一のアンダースコア( `_`)で名前を付けることができます。これは、不要なパラメーターを処理する関数の一般的な慣行です。

ベストプラクティス:

* 一貫した命名: プロジェクト全体で一貫した方法でアンダースコアを使用して、コードの読みやすさと保守性を向上させます。

* 不要なアンダースコアを避けてください: アンダースコアの過剰使用により、コードを読みにくくすることができます。それらが特定の目的を果たす場合にのみそれらを使用します。

* 標準ライブラリをチェック: アンダースコアから始まる標準的なライブラリ識別子に注意し、独自の変数に同じ名前を使用しないようにしてください。

例:

`` cpp

#include

クラスmyclass {

プライベート:

int _value; //プライベートメンバー変数

公共:

myclass(int value):_value(value){}

int getValue()const {

_valueを返す;

}

};

int main(){

MyClass OBJ(10);

std ::cout <<"value:" < 0を返します。

}

`` `

C ++でアンダースコアを使用することは、最終的には慣習とスタイルの問題であることを忘れないでください。コードを明確で理解しやすくする一貫した意味のあるアプローチを選択してください。

著作権 © ZG·言語学習(www.zongjiefanwen.com) 無断複写・転載を禁じます。